Это сообщение об ошибке ...
Dec 11, 2018 5:02:56 PM org.openqa.selenium.remote.ErrorCodes toStatus
INFO: HTTP Status: '500' -> incorrect JSON status mapping for 'timeout' (408 expected)
Exception in thread "main" org.openqa.selenium.TimeoutException: Timed out waiting for page to load.
... означает, что IEDriverServer не удалось выполнить click()
для элемента.
HTTP-статус: '500'
Внутренняя ошибка сервера HTTP (HTTP) 500 Protocol Код ответа указывает, что сервер обнаружил непредвиденное состояние, которое не позволило ему выполнить запрос.
Этот ответ об ошибке является общим "всеобъемлющим" ответом.Иногда администраторы сервера регистрируют ответы об ошибках, например код состояния 500, с более подробной информацией о запросе, чтобы предотвратить повторение этой ошибки в будущем.
Статус HTTP: '408'
408 REQUEST TIMEOUT указывает, что сервер не получил полное сообщение запроса в течение времени, в течение которого он был готов ждать.
Серверу СЛЕДУЕТ отправить опцию «закрыть» соединение в ответе,поскольку 408 подразумевает, что сервер решил закрыть соединение, а не продолжать ожидание.Если у клиента имеется невыполненный запрос в пути, клиент МОЖЕТ повторить этот запрос на новом соединении.
Решение
Вам необходимо вызвать WebDriverWait длятребуемый элемент , на который можно кликнуть , и вы можете использовать следующее решение:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("XPath for Element 1"))).click();
Кроме того, вам необходимо позаботиться о следующих аспектах:
- Защищенный режим : в Internet Explorer 7 или более поздней версии в Windows Vista или Windows 7 необходимо установить одинаковые значения для параметров Защищенный режим для каждой зоны.Значение может быть включено или выключено, если оно одинаково для каждой зоны.Чтобы установить Настройки защищенного режима , вам нужно выбрать «Свойства обозревателя» в меню «Сервис» и затем нажать на вкладку Безопасность .Для каждой зоны в нижней части вкладки будет установлен флажок Включить защищенный режим .
@ JimEvans в его статье Вы делаете это неправильно: IE Protected Mode и WebDriver четко упоминают:
Использование этой возможности не решает основной проблемы.Если граница защищенного режима пересекается, это может привести к очень неожиданному поведению, включая зависания, расположение элемента не работает и щелчки не распространяются.Чтобы предупредить людей об этой потенциальной проблеме, этой способности были даны громкие страшные имена, такие как INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS
в Java и IntroduceInstabilityByIgnoringProtectedModeSettings
в .NET .Мы действительно думали, что если вы скажете пользователю, что использование этого параметра приведет к потенциальной неработоспособности его кода, это будет препятствовать его использованию, но оказалось, что это не так.
Уровень масштабирования браузера : Уровень масштабирования браузера должен быть установлен на 100%, чтобы для событий собственной мыши можно было задавать правильные координаты.
Фокус браузера : Проблема в том, что сам IE, похоже, не полностью соблюдает сообщения Windows, которые мы отправляем в окно браузера IE (WM_MOUSEDOWN и WM_MOUSEUP), если окно не имеет фокуса.В частности, элемент, по которому щелкают, получит окно фокусировки вокруг него, но элемент не будет обрабатывать щелчок .Возможно, мы не должны отправлять сообщения вообще;скорее, мы должны использовать API SendInput (), но этот API явно требует, чтобы окно имело фокус.
Подробное обсуждение можно найти в Один щелчок в селенедействует как двойной щелчок