org.openqa.selenium.ElementNotInteractableException: элемент не может быть прокручен в представлении при попытке нажать кнопку - PullRequest
0 голосов
/ 25 июня 2018

Я работаю с драйвером Gecko Selen Java с FF 60.0. Раньше мой код работал правильно, но внезапно, теперь каждый раз, когда я его запускаю, он выдает ошибку как could not be scrolled into view, когда я пытаюсь нажать кнопку. ниже мой код, я попытался с Thread.sleep(5000) или неявным ожиданием, но ничего не работает. Я застрял здесь.

public void goToWorkerSummary() throws InterruptedException {
    WebElement btnWorkerSummary = driver.findElement(By.xpath("//a[@href='/admin/worker-summary']"));
    //Thread.sleep(5000);//wait.until(ExpectedConditions.visibilityOf(btnWorkerSummary).click();
    btnWorkerSummary.click();
}

Код до этого пункта работает, но как только он достигает здесь, он показывает вышеуказанную ошибку. ниже приведен фрагмент ошибки.

Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: Element <a class="bg-inverse text-white dropdown-item" href="/admin/worker-summary"> could not be scrolled into view
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System info: host: 'CPU-38', ip: '192.168.0.55', os.name: 'Windows 8', os.arch: 'x86', os.version: '6.2', java.version: '1.8.0_51'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 60.0.2, javascriptEnabled: true, moz:accessibilityChecks: false, moz:headless: false, moz:processID: 2480, moz:profile: C:\Users\xyz\AppData\Lo..., moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: XP, platformName: XP, platformVersion: 6.2, rotatable: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}}
Session ID: 08c08933-06f6-480c-88c9-9d7ab718c2c8
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:276)
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83)

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Это сообщение об ошибке ...

Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: Element <a class="bg-inverse text-white dropdown-item" href="/admin/worker-summary"> could not be scrolled into view

... означает, что GeckoDriver / FirefoxDriver не смог взаимодействовать с нужным элементом.

Решение

Как только вы найдете элемент btnWorkerSummary , который движется вперед при вызове click() вместо ExpectedConditions как visibilityOf, вам необходимо использовать elementToBeClickable() следующим образом:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@href='/admin/worker-summary']"))).click();

Однако другой проблемой является несовместимость между версиями двоичных файлов, которые вы используете, следующим образом:

  • Ваш Клиент Selenium версия 3.12.0 .
  • Ваша JDK версия 1.8.0_51 , что древняя .

Решение

  • Обновление JDK до последних уровней JDK 8u201 .
  • Выполните ваши @Test.
0 голосов
/ 13 октября 2018

Вы можете просто попробовать следовать js для прокрутки страницы. Введите Pixel в соответствии с вашим требованием прокрутки страницы.Здесь я использую 3000 пикселей для прокрутки страницы до середины

   JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("window.scrollBy(0,3000)");
0 голосов
/ 25 июня 2018

Попробуйте использовать javascriptexecutor, как показано в примере кода ниже,

JavascriptExecutor je = (JavascriptExecutor) driver;
je.executeScript("arguments[0].scrollIntoView(true);",driver.findElement(By.xpath("//a[@href='/admin/worker-summary']")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...