任何人有問題? 我似乎無法讓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異常的元素呢?或者你如何確定隱含的等待不起作用? –