0

“注册为新用户”链接文本出现在主页上,只要 webdriver 得到它(driver.get)。但它仍然等待整个页面加载到下一行执行。

driver.findelement(By.linkText("Register as new user")).click();

无论其他元素是否出现,webdriver 怎么可能一出现在页面上就点击该元素。我正在使用:JAVA、Ubuntu。

4

3 回答 3

2

我不确定隐式等待是否使驱动程序等待页面完全加载,尤其是在打开 URL 之后。但值得尝试显式等待。下面的代码使驱动程序等到元素变为可单击然后单击它。如果元素在指定时间(在下面的示例中设置为 30 秒)无法点击,则驱动程序抛出TimeoutException

WebDriverWait wait = new WebDriverWait(driver, 30//unit time in seconds);

wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Register as new user"))).click();
于 2013-03-22T18:36:40.110 回答
0

您可以更改 FireFoxDriver 配置文件设置,以使 Firefox 在调用.click后不等待整个页面加载

        FirefoxProfile profile = new FirefoxProfile();
        profile.SetPreference("webdriver.load.strategy", "unstable");
于 2013-03-22T15:24:48.477 回答
0

将 wait.until ... 语句括起来,如下所示:
turnOffImplicitWaits();
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("注册为新用户"))).click();
turnOnImplicitWaits();

于 2014-10-16T19:29:00.533 回答