一尘不染

Firefox-org.openqa.selenium.interactions.MoveTargetOutOfBoundsException

selenium

我遇到了一个奇怪的情况,在“宁静”页面上,我必须滚动到该元素:

withAction().moveToElement(webElement).perform();

对于某些元素,此方法将抛出:

org.openqa.selenium.interactions.MoveTargetOutOfBoundsException: 
(377.375, 958.3999938964844) is out of bounds of viewport width (1268) and height (943)

它仅在Firefox中发生(Chrome可以正常运行)。而且,几乎所有其他我使用相同方法的地方都运行良好。所有元素只是按钮,输入字段等常用元素。

有人知道如何在Firefox中解决此问题吗?

我有:

  • Firefox 61.0.2(64位)
  • Windows 10
  • 宁静1.9.30
  • Geckodriver 0.21.0

阅读 333

收藏
2020-06-26

共1个答案

一尘不染

此错误消息…

org.openqa.selenium.interactions.MoveTargetOutOfBoundsException: 
(377.375, 958.3999938964844) is out of bounds of viewport width (1268) and height (943)

…暗示 Selenium 无法聚焦在所需的元素上,因为该元素超出了视口的范围。

您的主要问题是将 WebElement 标识为 webElement
不在视口中,因此 Selenium
无法通过方法将 焦点 移到所需元素上moveToElement()

一个简单的解决方案是使用executeScript()方法将所需元素 放入视口中 ,然后moveToElement()按如下所示调用方法:

WebElement myElement = driver.findElement(By.xpath("xpath_of_element"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", myElement);
withAction().moveToElement(webElement).perform();
2020-06-26