他にも上記の問題がありますか? geckodriverが暗黙的にも明示的にも待機するようには見えません。それだけで私はのThread.sleepを使用するときに動作します()ここでJava Selenium 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.");}
}
が。
私の初期の暗黙の待機であるgeckoドライバのinitコードです。
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が表示されますか?それとも暗黙の待ち時間がどういうものかはどうやって決めますか? –