使用selenium webdriver单击元素时超时

时间:2014-08-18 10:19:47

标签: selenium webdriver

尝试点击链接文字时出现问题。问题是页面加载太长而导致异常:"命令持续时间或超时: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

有没有办法覆盖页面加载的时间?或者任何阻止页面加载的技巧,以便我可以验证标题和其他元素?任何帮助都会很大。

2 个答案:

答案 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/

还要看一遍流利的等待:http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/ui/FluentWait.html

答案 1 :(得分:0)

请尝试以下代码等待7秒,轮询时间为50毫秒 - 根据您的方便更改时间 -

new WebDriverWait(driver,7,50).until(ExpectedConditions.textToBePresentInElementLocated(By.linkText("PRONEWS"), "PRONEWS"));
driver.findElement(By.linkText("PRONEWS")).click();