任何人有问题? 我似乎无法让geckodriver以隐式或显式等待。它只有当我使用了Thread.sleep作品()Java的硒3.3.1和geckodriver 0.15.0不是等待窗口上述10
这是我这在我的整个代码库与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异常的元素呢?或者你如何确定隐含的等待不起作用? –