3

如何等待 driver.get(),因为我们使用 .get() 访问的 URL 是不知道的。并且可能需要未知时间,所以我们必须给 diver.get() 30 秒超时,然后如何给它。

以下是它的代码..

package org.openqa.selenium.example;

import java.util.List;

import org.openqa.selenium.By

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;


public class MyClass{

    public static void main(String[] args) throws Exception {

        // The Firefox driver supports javascript 

        WebDriver driver = new HtmlUnitDriver();

        // Go to the some websites

        driver.get("http://www.abced.com/123456/asd.htm");

        /***  Here we DONT get back the driver, so we need to Give Time out of 30 seconds**/

        final List<WebElement> element1= driver.findElements(By.tagName("a"));

    for (WebElement webElement : element1) {

        String urlFromPage = webElement.getAttribute("href");

                System.out.println(urlFromPage);

        }


     }

}

我试过了

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(thisPage.url);

它不工作..请建议,tx

4

2 回答 2

5

如果您想等待页面加载,您应该使用该pageLoadTimeout(long time, java.util.concurrent.TimeUnit unit)方法。implicitlyWait(long time, java.util.concurrent.TimeUnit unit)用于等待尚未出现的元素,而不是等待页面加载。

在您的 WebDriver 实例上,您应该调用与您使用的方法链类似的方法链implicitlyWait()。这将按顺序调用:

  • manage()- 驱动管理界面
  • options()- 驱动程序选项界面
  • timeouts()- 超时选项界面
  • pageLoadTimeout(...)- 将超时设置为您想要的时间

您可以在此处找到相关的 javadoc 。

于 2012-05-02T06:55:51.070 回答
0

相反,您可以使用 WebDriverWait 来指定要检查的条件和最大超时。这可以按如下方式使用:

WebDriverWait _wait = new WebDriverWait(driver, new TimeSpan(0, 0, 2)); //waits 2 secs max
_wait.Until(d => d.FindElement(By.Id("name")));

我已经对这个问题发布了类似的答案。

于 2012-05-03T00:04:00.147 回答