火狐 - org.openqa.selenium.interactions.MoveTargetOutOfBoundsException

Firefox - org.openqa.selenium.interactions.MoveTargetOutOfBoundsException

我遇到了一个奇怪的情况,在 Serenity 的页面上我必须滚动到元素:

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 中解决这个问题吗?

我有:

这个错误信息...

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

...意味着 Selenium 无法将焦点放在所需的元素上,因为该元素超出了视口的范围。

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

解决方案

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

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