通过Selenium中的Java交互API移动到不透明度为0的WebElement

通过Selenium中的Java交互API移动到不透明度为0的WebElement,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,从一个角度考虑以下: 移动到元素会引发以下异常: org.openqa.selenium.JavascriptException: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite. 我猜这是因为对于这样的透明元素,via似乎返回了一个“非有限”的double 在使用操作时,是否有方法防止这种情况发生?也许,除了检查元素是否

从一个角度考虑以下

移动到元素会引发以下异常:

org.openqa.selenium.JavascriptException: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite.
我猜这是因为对于这样的透明元素,via似乎返回了一个“非有限”的double


在使用
操作时,是否有方法防止这种情况发生?也许,除了检查元素是否可单击(
ExpectedConditions#ElementTobelickable(…)
),我还必须分析哪些属性听起来很可怕,例如
opacity

,我刚刚在本地尝试了您的示例文件,下面的代码没有异常

WebElement e = driver.findElement(By.id("invisi_select"));
Select select = new Select(e);
select.selectByValue("apples");
System.out.println(select.getFirstSelectedOption().getText());
select.selectByValue("oranges");
System.out.println(select.getFirstSelectedOption().getText());
它打印

Apples
Oranges

我刚刚在本地尝试了您的示例文件,下面的代码正常工作

WebElement e = driver.findElement(By.id("invisi_select"));
Select select = new Select(e);
select.selectByValue("apples");
System.out.println(select.getFirstSelectedOption().getText());
select.selectByValue("oranges");
System.out.println(select.getFirstSelectedOption().getText());
它打印

Apples
Oranges
此错误消息

org.openqa.selenium.JavascriptException: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite.
…表示WebDriver实例由于一个或其他原因无法关注元素:

  • 尝试与元素交互时,该元素未正确加载
  • 元素没有得到焦点

解决方案 您可以使用该类,而不是使用,您可以使用以下任一项:

  • 使用
    cssSelector
    selectByValue()

  • 使用
    xpath
    selectByVisibleText()


工具书类 您可以在以下内容中找到一些相关的详细讨论:

此错误消息

org.openqa.selenium.JavascriptException: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite.
…表示WebDriver实例由于一个或其他原因无法关注元素:

  • 尝试与元素交互时,该元素未正确加载
  • 元素没有得到焦点

解决方案 您可以使用该类,而不是使用,您可以使用以下任一项:

  • 使用
    cssSelector
    selectByValue()

  • 使用
    xpath
    selectByVisibleText()


工具书类 您可以在以下内容中找到一些相关的详细讨论:


您尝试过我的答案了吗?我们在所有的项目中都使用它,而且它没有任何问题。@JeffC不幸的是,这只在我的上下文中适用于一定程度,因为它并不能阻止异常的发生。您没有重构单击以使用操作,而是尝试了我的答案吗?我们在所有的项目中都使用了这一点,它没有问题。@ Jeffc不幸的是,这仅适用于我的上下文中的某个程度,因为它并不能防止异常发生。请考虑我的注意事项:“……这是在一个通用的执行器的上下文中发生的,它在硒API的顶部运行。”我还说过我正在使用交互API/
操作
,其中
选择
不适用。尽管如此,+1表示我不知道的解决方案。谢谢!是的,但您说过,当常规单击等抛出
元素ClickInterceptedException时,您切换到了
操作
。此代码不会抛出任何异常,因此您可以使用它而不是<代码>操作< /代码>。请考虑我的注意事项:“……”这种情况发生在一个通用的执行器的上下文中,该执行器运行在硒API的顶部。“我还说我正在使用交互API /<代码>动作< />代码,其中<代码>选择< /C> >不适用。尽管如此,+1表示我不知道的解决方案。谢谢!是的,但您说过,当常规单击等抛出
元素ClickInterceptedException时,您切换到了
操作
。此代码不会引发任何异常,因此您可以使用它来代替
操作
Select s = new Select(driver.findElement(By.xpath("//select[@id='invisi_select']")));
s.selectByVisibleText("Apples");