我在线程“main”中的getException org.openqa.selenium.ElementNotInteractableException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在线程“main”中的getException org.openqa.selenium.ElementNotInteractableException相关的知识,希望对你有一定的参考价值。

码:

WebElement betting = driver.findElement(By.id("flex-menu"));
        List<WebElement> hallo = betting.findElements(By.xpath("//*[@id='flex-menu']//ul//li//a"));

            System.out.println(hallo.get(0).getText());

            hallo.get(0).click();

错误按摩:

线程“main”中的异常org.openqa.selenium.ElementNotInteractableException:

会话ID:4bfaaf77-6275-4ffc-a8d7-b24b70f3acca at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl。 java:45)at org.openqa.selenium.remote上的org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)中的java.lang.reflect.Constructor.newInstance(Constructor.java:422) .http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java) :164)org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)atg.openqa.selenium。 remote.RemoteWebElement.execute (RemoteWebElement.java:279)atf.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83)at Aufgabe1.Main.main(Main.java:41)

该守则有什么问题?我不能点击但它找到了元素。

答案

可能是因为两个原因。

1)您的按钮元素可见但尚未可点击。如果是这种情况则使用等待条件。

WebDriverWait myWaitVar = new WebDriverWait(driver,20);
WebElement el = myWaitVar.until(ExpectedConditions.elementToBeClickable(betting.findElements(By.xpath("//*[@id='flex-menu']//ul//li//a")).get(0)));
el.click();

2)如果元素被其他元素隐藏/重叠,请使用javascriptExecutor

 WebDriverWait myWaitVar = new WebDriverWait(driver,20);
    WebElement el = myWaitVar.until(ExpectedConditions.elementToBeClickable(betting.findElements(By.xpath("//*[@id='flex-menu']//ul//li//a")).get(0)));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", el); 

有关更多信息,请访问In Selenium Webdriver, ExpectedCondition.elementToBeClickable is not waiting until the progress bar disappears

另一答案

这可能是因为您正在尝试的元素被隐藏/需要隐式等待条件。尝试使用.enable()函数实现隐式显式等待条件,然后尝试使用.click()函数。

以上是关于我在线程“main”中的getException org.openqa.selenium.ElementNotInteractableException的主要内容,如果未能解决你的问题,请参考以下文章

线程“main”中的异常 java.lang.ClassNotFoundException: sample.Main - 为啥?

如何摆脱 Android Studio 警告“未抛出 getException() 的结果”?

如何解决线程“main”中的异常,java.lang.ArithmeticException:/为零? [关闭]

如何修复运行时错误-线程“main”java.util.NoSuchElementException中的异常

多线程中的Java volatile关键字

线程“main”中的异常com.sun.xml.internal.ws.fault.ServerSOAPFaultException:客户端从服务器收到SOAP Fault