我正在使用 Selenium 远程 WebDriver。我从 csv 文件中读取所有链接并对这些链接运行测试。但有时我会收到 404 响应。
Selenium WebDriver 中是否有任何方法可以检查我们是否收到 HTTP 响应 200?
我正在使用 Selenium 远程 WebDriver。我从 csv 文件中读取所有链接并对这些链接运行测试。但有时我会收到 404 响应。
Selenium WebDriver 中是否有任何方法可以检查我们是否收到 HTTP 响应 200?
before using selenium, you could use something like:
public static boolean linkExists(String URLName){
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con =
(HttpURLConnection) new URL(URLName).openConnection();
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}
Using it in this way:
WebDriver driver = new FirefoxDriver();
for(String url : csvArray){
if(linkExists(url)){
driver.get(url);
.
.
.
}
}
我们的网站有一个用于 404 响应的自定义错误页面。该页面上的页面标题显示“404 - 页面未找到”。我使用 driver.Title 并检查文本“未找到”。
使用 C#,我编写了以下代码:
// Check for 404 page:
var pageNotFoundTitleText = "not found";
if (driver.Title.ToLower().Contains(pageNotFoundTitleText)) throw new Exception("### 404 - Page Not found: " + link);
您可以使用 RestAssured import static com.jayway.restassured.RestAssured.given;
int returnCode = given().when().baseUri(url).get().getStatusCode();
if (returnCode == 200) {
webDriver.get(url);
helper.asserts.assertTrue(helper.finder.isElementPresent(By.className("ticketType")));
} else {
helper.asserts.fail("This url "+url+" is returning the following code: " + returnCode);
};
这是一种方式(我认为:P)。
您可以使用 JavaScript 检查页面上的 http 状态。JS可以通过以下方式在Java中调用:
((JavascriptExecutor) webDriver).executeScript(js);
最好的选择是使用 JS 函数在节点硬盘上创建虚拟网页,并在该页面上的 executeScript() 中调用该函数。
您也可以尝试在 executeScript() 中发送所有 JS 代码,但我不确定这是否可行。