#java #selenium #selenium-webdriver #webdriver #selenium-grid
#ява #селен #selenium-веб-драйвер #веб — драйвер #selenium-grid
Вопрос:
Я использую selenium grid с docker и запускаю 6 параллельных тестов на узле Windows с IE, он работает хорошо, но редко я получаю ошибку ниже, и я использовал неявное ожидание 120 секунд при запуске функции входа в систему (так что это будет применимо ко всему коду до срока службы драйверов)
Скрипт показывает «Статус тестового запроса «отправлен», успех» (ожидаемый), а затем его ожидание в течение 120 секунд, прежде чем нажать кнопку сброса, а затем появляется ошибка ниже (всплывающее окно предупреждения должно появиться после нажатия кнопки сброса)
код:
1.
if (status.equals("Submitted")) {
appUtils.setPassDescription(node, "Test request status is 'submitted',success");
logger.info("Test request status is 'submitted',success");
} else if (status.equals("Not Submitted")) {
appUtils.setFailDescription(node, "Test request status is 'Not submitted',failure");
logger.error("Test request status is 'Not submitted',failure");
}
cnf.alertHandle("ok",node);
public void alertHandle(String type, ExtentTest node) {
try {
clickElement(sUtils.getElementByCSSSelector(loginElms.resetTestButtonCss), 10, "Reset", node);
WebDriverWait wait = new WebDriverWait(getDriver(), 30);
wait.until(ExpectedConditions.alertIsPresent());
Alert alertOK = driver.get().switchTo().alert();
if(type.equalsIgnoreCase("ok")){
alertOK.accept();
appUtils.setTestStepsInfo(node,"Clicked on 'Ok' of Reset");
}else if(type.equalsIgnoreCase("cancel"))
{
alertOK.dismiss();
appUtils.setTestStepsInfo(node,"Clicked on 'Cancel' of Reset");
}
Thread.sleep(3000);
} catch (Exception e) {
logger.error(e.getMessage());
appUtils.setFailDescription(node, e.getMessage());
}
}
Исключение:
Timed out waiting for script to complete.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-
14T08:17:03'
System info: host: 'bld02600012', ip: '10.54.228.104', os.name: 'Linux',
os.arch: 'amd64', os.version: '3.10.0-1062.4.3.el7.x86_64', java.version:
'1.8.0_261'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, browserName: internet explorer,
browserVersion: 11, javascriptEnabled: true, pageLoadStrategy: normal,
platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(), se:ieOptions:
{browserAttachTimeout: 0, elementScrollBehavior: 0, enablePersistentHover:
true, ie.browserCommandLineSwitches: , ie.ensureCleanSession: false,
ie.fileUploadDialogTimeout: 3000, ie.forceCreateProcessApi: false,
ignoreProtectedModeSettings: false, ignoreZoomSetting: false,
initialBrowserUrl: http://localhost:52445/, nativeEvents: true,
requireWindowFocus: false}, setWindowRect: true, timeouts: {implicit: 0,
pageLoad: 300000, script: 30000}, webdriver.remote.sessionid: cc942e9f-96f3-
4a63-8337-5ba...}
Session ID: cc942e9f-96f3-4a63-8337-5ba5eb4f506c
Я удивлен, поскольку я не использовал никакого кода javascript, насколько я понимаю, мы получим эту ошибку, если мы обрабатываем какой-либо асинхронный вызов (пожалуйста, поправьте меня, если я ошибаюсь), может кто-нибудь, пожалуйста, сказать мне, почему я получаю эту ошибку
- selenium — 3.141.59
- testng — 6.14.3
- maven — 3.6.0
- IEDriver — 3.14.0
- Java — 1.8.0_261
Ответ №1:
Это сообщение об ошибке…
Timed out waiting for script to complete.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'bld02600012', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-1062.4.3.el7.x86_64', java.version: '1.8.0_112'
…подразумевает, что IEDriverServer не смог взаимодействовать с новым контекстом просмотра, т.е. с сеансом браузераInternetExplorer.
Ваша основная проблема заключается в несовместимости между версией двоичных файлов, которые вы используете следующим образом:
- Ваша java.version — 1.8.0_112, которая довольно старая и древняя.
Решение
Убедитесь, что:
- JDK обновлен до текущего уровня JDK 8u252.
Комментарии:
1. Привет, я попробовал версию JDK, о которой вы упомянули выше. Но я все еще получаю ту же ошибку, что и выше. Меня беспокоит то, что я должен получить конкретную ошибку для конкретного действия, которое описывает, в чем проблема. Но в моем случае, если я получаю ошибку в любом месте, как в приведенном выше примере, предположим, что он не может выбрать какое-либо раскрывающееся значение, в этом случае также появляется та же ошибка, что и выше
2. Я обновил свой вопрос обновленной версией Java 1.8.0_261