【发布时间】:2017-09-01 23:27:52
【问题描述】:
还有其他人遇到上述问题吗? 我似乎无法让 geckodriver 隐式或显式等待。它仅在我使用 Thread.sleep() 时才有效
这是我的 Explicit 方法,它使用 chromedriver 在我的代码库中运行良好:
public void waitForPageLoad(WebDriver driver) throws MyTestException {
try { new WebDriverWait(driver, page_timeout).until((ExpectedCondition<Boolean>) wd ->
((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete"));
} catch (Exception e){logger.warning("Waiting for page load failed.");}
}
我什至不必使用隐式调用。
这是我的壁虎驱动程序初始化代码,其中我还初始化了一个隐式等待。
else if (config.useFirefox()) {
String geckoDriverLocation = config.getProperty("qa.webdriverpath") + "geckodriver.exe";
System.setProperty("webdriver.gecko.driver", geckoDriverLocation);
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//DesiredCapabilities dc = DesiredCapabilities.firefox();
}
不使用睡眠,它甚至不等待登录元素填充。 示例:
WebElement emailText = test.getDriver().findElement(By.name("email"));
WebElement passText = test.getDriver().findElement(By.name("password"));
WebElement loginButton = test.getDriver().findElement(By.xpath("//input[@type='submit']"));
test.getLogger().info("Logging in as user " + user.contact.getName() + " (" + user.getEmail() + ")...");
emailText.clear();
emailText.click();
emailText.sendKeys(user.getEmail());
emailText.sendKeys(Keys.TAB);
passText.clear();
passText.sendKeys(user.getPassword());
passText.sendKeys(Keys.TAB);
loginButton.click();
//try{Thread.sleep(3000);}catch(Exception e){}
test.waitForPageLoad(test.getDriver());
感谢指导。
【问题讨论】:
-
那么,您在使用 geckodriver 时遇到了 NoSuchElementException 元素?或者你如何确定隐式等待不起作用?
标签: java selenium geckodriver