我正在学习如何使用 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 我收到错误消息: …