检查的HttpResponse行(200)与硒的webdriver [重复](Checking Ht

2019-07-18 18:36发布

这个问题已经在这里有一个答案:

  • 检查HTTP状态码硒 7个回答

我使用的硒的远程的webdriver。 我读的CSV文件,并运行测试对这些链接的所有链接。 但有时我得到404的响应。

是否有硒webdriver的任何检查,我们得到的HTTP响应200?

Answer 1:

有没有办法直接对webdriver的API中获得HTTP状态代码。 这是一个长期的功能请求 ,这将可能永远不会被实施该项目。 正确的解决问题的方法是配置您的浏览器使用可拦截并记录网络流量的代理,并让您的代码查询代理为他导致你后。

当然,如果你有兴趣在检查一个链接,以确保它返回200个状态码,你可以很容易地只使用在任何一种语言,你的愿望导航到该链接的HTTP客户端库。 有没有必要,除非你需要操纵的结果页面以某种方式使用的webdriver。



Answer 2:

使用硒之前,你可以使用这样的:

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;
    }
  }

以这种方式使用它:

WebDriver driver = new FirefoxDriver();
for(String url : csvArray){
   if(linkExists(url)){
      driver.get(url);
            .
            .
            .
   }
}


Answer 3:

我们的网站有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);


Answer 4:

您可以使用RestAssured进口静态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);
    };


Answer 5:

这应该是一个办法(我想:P)。
您可以在网页上使用JavaScript来检查HTTP状态。 JS可以用Java调用方式如下:
((JavascriptExecutor)的webdriver).executeScript(JS);

最好的选择是建立在节点硬盘JS功能虚拟网页,并调用页面上executeScript该功能()。
您也可以尝试将所有的JS代码executeScript(),但我不知道将工作。



文章来源: Checking HttpResponse OK (200) with Selenium WebDriver [duplicate]