Подтвердить что ты не робот

Проверка HttpResponse OK (200) с Selenium WebDriver

Я использую Selenium Remote WebDriver. Я прочитал все ссылки из файла csv и проверил тесты на эти ссылки. Но иногда я получаю ответ 404.

Есть ли какой-либо способ в Selenium WebDriver проверить, что мы получаем HTTP-ответ 200?

4b9b3361

Ответ 1

Невозможно получить коды состояния HTTP непосредственно в API WebDriver. Это долговременный запрос никогда не будет реализован в проекте. Правильное решение вашей проблемы состоит в том, чтобы настроить браузер на использование прокси-сервера, который может перехватывать и регистрировать сетевой трафик, а ваш кодовый запрос - прокси-сервер для его результата.

Конечно, если все, что вас интересует, это проверка ссылки, чтобы убедиться, что она возвращает код состояния 200, вы можете просто просто использовать клиентскую библиотеку HTTP на любом языке, который вы хотите перейти по ссылке. Нет необходимости использовать WebDriver, если вам не нужно каким-либо образом манипулировать результирующей страницей.

Ответ 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);
            .
            .
            .
   }
}

Ответ 3

Наш сайт имеет собственную страницу ошибок для 404 ответов. Название страницы на этой странице говорит "404 - Страница не найдена". Я использую driver.Title и проверяю текст "не найден".

Используя С#, я написал следующее:

// Check for 404 page:
var pageNotFoundTitleText = "not found";
if (driver.Title.ToLower().Contains(pageNotFoundTitleText)) throw new Exception("### 404 - Page Not found: " + link);

Ответ 4

Вы можете сделать это, используя 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);
    };

Ответ 5

Это способ для этого (я думаю: P).
Вы можете использовать JavaScript для проверки статуса http на странице. JS можно вызывать на Java следующим образом:
((JavascriptExecutor) webDriver).executeScript(js);

Лучший вариант - создать фиктивную веб-страницу на жестком диске node с функцией JS и вызвать эту функцию в executeScript() на этой странице.
Вы также можете попробовать отправить весь JS-код в executeScript(), но я не уверен, что это сработает.