6. Javascript重寫confirm
String js ="window.confirm = function(msg){ return true;}”
((JavascriptExecutor)driver).executeScript( js);
通過執(zhí)行上面的js,該頁面上所有的confirm將都不再彈出。
7. 動(dòng)態(tài)載入jquery
并不是所有的網(wǎng)頁都引入了Jquery,如果我們要在這些網(wǎng)頁上執(zhí)行Jquery代碼,必須動(dòng)態(tài)加載Jquery source文件
driver.get("file:///C:/test.html");
boolean flag =(boolean)(driver_js).executeScript("return typeof jQuery =='undefined'");
if (flag)
{
driver_js.executeScript("var jq =document.createElement('script');"
+ "jq.type ='text/javascript'; "
+"jq.src ='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js';"
+"document.getElementsByTagName('head')[0].appendChild(jq);");
Thread.sleep(3000);
}
waiter.waitForPageLoad();
driver_js.executeScript("$("input#testid").val("test");");
8. 判斷元素是否存在
可以通過下面的辦法來判斷頁面元素是否存在,但是缺點(diǎn)是如果元素不存在,必須在拋出exception后才能知道,所以會(huì)消耗一定的時(shí)間(需要超時(shí)后才會(huì)拋出異常)。
boolean ElementExist(By Locator){
try{
driver.findElement(Locator);
return true;
}
catch(org.openqa.selenium.NoSuchElementException ex)
{
return false;
}
}
也許我們可以在JavaScript中判斷頁面元素是否存在,然后再將結(jié)果返回給Webdriver的Java代碼。
頁面元素
String js =" if(document.getElementById("XXX")){ return true; } else{ return false; }”
String result = ((JavascriptExecutor)driver).executeScript(js);
或者
表單元素
String js =" if(document.theForm.###){return true; } else{ return false; }”
String result = ((JavascriptExecutor)driver).executeScript(js);
9. 結(jié)尾
JavaScript在WebDriver中還可以做很多事情,但這還不是全部。比如,我們是否可以編寫代碼來監(jiān)視在整個(gè)Webdrvier測試代碼運(yùn)行過程是否產(chǎn)生過JavaScriptError呢,答案是肯定的,有興趣的同學(xué)可以深入研究一下。