org.openqa.selenium.ElementNotInteractableException:元素<a class="bg-inverse "> could not be scrolled into view when trying to click a button

时间:2018-06-25 13:51:57

标签: selenium firefox selenium-webdriver webdriver geckodriver

I'm working with gecko driver selenium java with FF 60.0. Previously my code was working properly, but all of sudden, now every time I run it, it gives me an error as could not be scrolled into view while I'm trying to click a button. below is my code, I tried with Thread.sleep(5000) or implicit wait but nothing is working.I'm stuck here.

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();
}

the Code up to this points works but as soon as it reaches here, it is showing the above error. below is the error snippet.

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 :(得分:1)

尝试使用javascriptexecutor,如下所示的示例代码,

JavascriptExecutor je = (JavascriptExecutor) driver;
je.executeScript("arguments[0].scrollIntoView(true);",driver.findElement(By.xpath("//a[@href='/admin/worker-summary']")));

答案 1 :(得分:0)

此错误消息...

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 Client 版本是 3.12.0
  • 您的 JDK 版本是 1.8.0_51 ,这是古代

解决方案

  • JDK 升级到最新级别JDK 8u201
  • 执行您的@Test

答案 2 :(得分:0)

您可以简单地尝试按照js滚动页面。按要求输入Pixel来滚动页面。在这里,我使用3000 Px滚动页面到中间

   JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("window.scrollBy(0,3000)");