尝试点击链接文字时出现问题。问题是页面加载太长而导致异常:"命令持续时间或超时:60.01秒"。我也设定了:
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(180, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(180, TimeUnit.SECONDS);
它总是在60.01秒内超时,看起来代码无法覆盖页面加载的默认时间。我使用的是Chrome驱动程序。这是我的代码:
driver.get(baseUrl + "?k=" + test.Key);
// verify the MoCoin icon exists
assertTrue("The 'MoCoin' icon does not exist",
driver.findElements(By.id("tokens-navbar")).size() != 0);
// verify the 'pronews' menu exists
assertTrue("The the 'pronews' menu does not exist", driver
.findElements(By.linkText("PRONEWS")).size() != 0);
// click on the 'pronews' menu
driver.findElement(By.linkText("PRONEWS")).click(); // exception here, the element was clicked and the new page was loading
有没有办法覆盖页面加载的时间?或者任何阻止页面加载的技巧,以便我可以验证标题和其他元素?任何帮助都会很大。
答案 0 :(得分:0)
尝试使用显式等待而不是隐式等待: 明确等待:
WebDriverWait.until(condition-that-finds-the-element)
:您也可以在此处忽略例外情况。
隐含等待:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
此处有更多信息:http://www.bizalgo.com/2012/01/14/timing-races-selenium-2-implicit-waits-explicit-waits/
答案 1 :(得分:0)
请尝试以下代码等待7秒,轮询时间为50毫秒 - 根据您的方便更改时间 -
new WebDriverWait(driver,7,50).until(ExpectedConditions.textToBePresentInElementLocated(By.linkText("PRONEWS"), "PRONEWS"));
driver.findElement(By.linkText("PRONEWS")).click();