2014-05-07 60 views
-1

Selenium RC命令selenium.waitForPageToLoad("30000")在WebDriver中不起作用。 在WebDriver中有没有其他的替代命令?使用硒WebDriver进行自动化测试?

+0

你如何定义“不工作”?它不在等待吗?它会抛出一个错误吗?页面是否完成加载,但webdriver一直在等待? –

回答

0

Selenium中可以使用两种等待方式;隐含的和明确的。

下面的例子是用Java编写的:

1)显式等待:

new WebDriverWait(super.getDriver(), 10).until(ExpectedConditions.elementToBeClickable(site_logo)); 

上面的代码将等待10秒钟,现场的标志元素被点击,如果没有它会抛出异常。 ExpectedConditions类有很多其他可以使用的方法。您可以检查一个元素是否存在与否等等

2)隐等待:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

隐含的等待是告诉webdriver的努力时,轮询DOM一定量的时间找到一个或多个元素,如果它们不是立即可用的。默认设置为0.一旦设置,就会为WebDriver对象实例的生命周期设置隐式等待。

还有Thread.sleep(以毫秒为单位的时间);方法,但我不建议你使用这个。

欲了解更多信息:http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp

0

您可以使用WebDriveWait来解决它:

http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp

为了等待一个元素,使用wait.until(ExpectedConditions.visibilityOfElementLocated):

@Test 
public void test1() throws Exception { 
    WebDriverWait wait = new WebDriverWait(driver, 1); 
    driver.get("example.html"); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(elementLocation)));  
    driver.close(); 
}