Получение «Тайм-аута ожидания завершения сценария» в selenium Java, тогда как я не использовал никакого асинхронного кода в script

#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.version1.8.0_112, которая довольно старая и древняя.

Решение

Убедитесь, что:

  • JDK обновлен до текущего уровня JDK 8u252.

Комментарии:

1. Привет, я попробовал версию JDK, о которой вы упомянули выше. Но я все еще получаю ту же ошибку, что и выше. Меня беспокоит то, что я должен получить конкретную ошибку для конкретного действия, которое описывает, в чем проблема. Но в моем случае, если я получаю ошибку в любом месте, как в приведенном выше примере, предположим, что он не может выбрать какое-либо раскрывающееся значение, в этом случае также появляется та же ошибка, что и выше

2. Я обновил свой вопрос обновленной версией Java 1.8.0_261