2014-05-07 56 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(); 
}