获取网页中的最后一个加载元素

时间:2015-12-14 09:03:31

标签: java selenium

我正在写一个硒代码。在这里,我想获得页面加载时间。代码如下。

FirefoxDriver fd = new FirefoxDriver();
fd.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
long startTime = System.currentTimeMillis();
System.out.println("Start time is " + startTime);
fd.get("myurl");
long endTime = System.currentTimeMillis();
System.out.println("End time is " + endTime);
System.out.println("total time is " + (endTime - startTime) + " for i " + i);
timeTaken += (endTime - startTime);
fd.close();
System.out.println("Total tyime is " + timeTaken);
System.out.println("Avg time is " + (timeTaken / 10));

我的问题是,我想使用Explicit TimeWait。为了使用它,我在教程中看到我需要获取一些web元素并使用waitTill条件,但是在这里我无法理解最后加载哪个元素,请让我知道如何找到它,这样我就可以得到更准确的结果。

由于

1 个答案:

答案 0 :(得分:1)

您应该使用显式等待您要与之交互的元素。 例如,如果您在网页上并且需要单击“提交”按钮,则将指定显式等待“提交”按钮。 E.g:

WebDriver driver = new FirefoxDriver();
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("submitbutton")));

或者您可以等待元素可点击:

public WebElement isElementLoaded(WebElement elementToBeLoaded) {
    WebDriverWait wait = new WebDriverWait(driver, 15);
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(item)));
    return element;
}

对于你提到的内容,要等待加载页面上的最后一个元素,这更像是一个隐式等待,因为你知道更多的元素需要更长的时间来加载并指定一个更长的隐式加载时间。