selenium高效應對Web頁面元素重新整理
阿新 • • 發佈:2019-01-11
當我們在頁面上進行selenium.type()或者selenium.click()操作的時候,往往需要需要等待一個元素的出現,對於一般的網頁,當我們進入一個新頁面的時候,往往會使用selenium.waitForPageToLoad(WAITTIME);對彈出視窗中的元素,往往寫死要等待多少秒,其實可以使用如下更加通用高效的方法,自己寫一個waitForElement()的方法:
Java程式碼
protected void waitForElement(String target) {
for (int second = 0;; second++) {
if (second >= 60) {
LOGGER.debug("Element:" + target
+ " can't be found after 60 seconds");
fail("find element timeout: " + target);
}
try {
if (selenium.isElementPresent(target))
break ;
} catch (Exception e) {
LOGGER.debug("Element:" + target
+ " can't be found in 60 seconds");
assert (false);
}
pause(1000);
}
}
這段程式碼的功能是讓我們最多等待某個元素60秒,直至它出現,否則就讓test case失敗,當我們要click或者type某個元素的時候,就先呼叫這個方法,下面是經過改進的click方法
Java程式碼
protected void click(String locator) {
waitForElement(locator);
selenium.click(locator);
}
從此,我們可以不管頁面倒是是不是ajax實現,只要呼叫這樣的click()方法,程式中就不需要出現Thread.sleep(10000)這樣的程式碼了.