我目前正在学习 Selenium,我学到了很多东西。社区说的一件事;是您需要尽可能避免 thread.sleep 。Selenium 在替换中使用隐式和显式等待。是的,我理解这个概念。
最近我遇到了一个问题。这就是没有特定动作的情况;从登录页面转到另一个页面,而不使用 Thread.sleep(1000)。Selenium 似乎太崩溃了:它找不到某个元素。我觉得这种行为很奇怪。所以我在想这个冲突发生了,因为登录页面首先要重定向到网站的主页并且没有 Thread.sleep(1000); 它想去第二页,但登录页面拒绝它,因为它想先去主页。话虽如此,这就是为什么 Selenium 会崩溃,或者你们在下面的示例中看到和奇怪的代码使用了吗?
// Currently on a webpage
WebElement ui_login_button = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("account-login-button")));
ui_login_button.click();
//After the click it logs in and redirects to a webpage
Thread.sleep(1000); // why sleep here? (without this Selenium crashes)
// Go to second page and perform actions
waitForLoad(driver);
driver.navigate().to(URL + "/mymp/verkopen/index.html");
/* -------------------------------------------------------------------
public void waitForLoad(WebDriver driver) {
ExpectedCondition<Boolean> pageLoadCondition = new
ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
}
};
//WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(pageLoadCondition);
}
抱歉解释,我尽力说清楚。英语不是我的母语。谢谢你的帮助。
亲切的问候。