小编Mic*_*zal的帖子

org.openqa.selenium.interactions.MoveTargetOutOfBoundsException: (x, y) 越界,而鼠标悬停与 GeckoDriver Firefox Selenium

我正在学习如何使用 Selenium WebDriver 进行自动化测试,但是我卡住了,无法使下拉菜单在 Firefox 中工作。相同的代码在 Chrome 中运行得非常好。

我正在练习的站点是:http : //www.executeautomation.com/demosite/index.html ,我想从菜单中单击以下项目:自动化工具 > Selenium > Selenium WebDriver。

错误消息表明 web 元素可能尚未加载到屏幕上,所以我实现了一些方法来等待每次执行,直到元素出现:

public static void ImplicitWait(WebDriver driver){
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
}
Run Code Online (Sandbox Code Playgroud)

但它没有帮助。

然后我读到最好“管道”这些 moveToElement() 方法而不是一个一个地执行它们。所以我改变了这个:

action.moveToElement(menu).perform();
action.moveToElement(selenium).perform();
action.moveToElement(seleniumWebDriver).click().build().perform();
Run Code Online (Sandbox Code Playgroud)

到一行。此时它开始在 Chrome 上工作,但我仍在努力使其在 Firefox 上工作。

当前代码如下所示:

System.setProperty("webdriver.gecko.driver", "C:\\Drivers\\geckodriver-v0.24.0-win64\\geckodriver.exe");
System.setProperty("webdriver.firefox.bin", "C:\\Program Files\\Mozilla Firefox\\firefox.exe");
WebDriver driver = new FirefoxDriver();

ImplicitWait(driver);

driver.navigate().to("http://executeautomation.com/demosite/index.html");

WebElement menu = driver.findElement(By.id("Automation Tools"));
WebElement selenium = driver.findElement(By.id("Selenium"));
WebElement seleniumWebDriver = driver.findElement(By.id("Selenium WebDriver"));

Actions action = new Actions(driver);
action.moveToElement(menu).moveToElement(selenium).moveToElement(seleniumWebDriver).click().build().perform();
Run Code Online (Sandbox Code Playgroud)

正如我上面提到的,当我切换到 Chrome 时同样可以正常工作,但是使用 Firefox 我收到错误消息: …

java firefox selenium mousehover geckodriver

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

firefox ×1

geckodriver ×1

java ×1

mousehover ×1

selenium ×1