7.通過Css進(jìn)行定位(Cascading Style Sheets)
css=form#loginForm
css=input[name="username"]
css=input.required[type="text"]
css=input.passfield
css=#loginForm input[type="button"]
css=#loginForm input:nth-child(2)
二、Selenium錯誤現(xiàn)場保存方法(截屏和記錄日志)
知曉了如何定位元素,我們可以觸發(fā)頁面上相應(yīng)的BOM事件了。
那么當(dāng)執(zhí)行頁面響應(yīng)的自動化操作的時候發(fā)生了錯誤我們應(yīng)該怎樣才能更好的記錄相應(yīng)的錯誤呢?記錄Log日志和保存相應(yīng)的屏幕錯誤信息。
1.首先記錄log日志,可使用為java量身定做的log4j進(jìn)行日志記錄(我的另外一篇Log4j如何實(shí)現(xiàn)日志分模塊,分天,分錯誤級別進(jìn)行記錄)
2.截取錯誤發(fā)生時的屏幕,這樣可以很快的定位錯誤發(fā)生前的操作和錯誤發(fā)生時的錯誤信息了。
分享一段執(zhí)行截屏的java代碼。
/*截屏操作,遇到錯誤自動截屏存儲到指定位置。
* 指定保存的路徑,然后通過 TakesScreenshot 的 getScreenshotAs進(jìn)行截屏操作。
* WebElement 繼承 TakesScreenshot 這個大能耐焊好的基于了瀏覽器,返回當(dāng)前的狀態(tài)
* ——整個當(dāng)前的HTML元素內(nèi)容
* ——可視化部分的HTML元素
* */
public static void captureScreenshot(String arg0,WebDriver driver){
if(PrivateDataSource.Debug){
logger.debug("調(diào)試截圖功能,并把截圖存儲到:"+PrivateDataSource.screenshotsResultsPath);
}
String screenshotsResultsPath=PrivateDataSource.screenshotsResultsPath;
String imagePath = screenshotsResultsPath + File.separator+arg0+"_"
+arg0+".png";
File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
org.apache.commons.io.FileUtils.copyFile(screenShotFile, new File(imagePath));
} catch (IOException e) {
e.printStackTrace();
if(PrivateDataSource.DebugError){
logger.info( logger.getClass().getName()+" selenium輸出截圖功能失敗。以下是錯誤信息!");
logger.error(e.getStackTrace());
}
}
}
三、Selenium瀏覽器兼容性測試
1.向?yàn)g覽器注入一段可執(zhí)行的JavaScript腳本
在很多情況下我們需要程序觸發(fā)一段JavaScript腳本,首先我們需要注冊相應(yīng)的JavaScript到瀏覽器中然后觸發(fā)執(zhí)行。
WebElement ele = driver.findElement(By.id("SubMenu7").xpath("//table/tbody/tr[9]"));//定位Web頁面的元素
//((JavascriptExecutor)driver).executeScript("arguments[0].onclick=function(){alert('js has been execute!');}", ele);//為這個元素添加可執(zhí)行的js
((JavascriptExecutor)driver).executeScript("arguments[0].onclick=function(){SelectMenu(this,'AirLineSeasonManage.aspx?TimeStamp=' + TimeStamp());}", ele);//為這個元素添加可執(zhí)行的js
ele.click();
以上代碼首先找到相應(yīng)的元素
然后向相應(yīng)的元素里面注入一段可執(zhí)行腳本
后點(diǎn)擊該元素執(zhí)行這個JavaScript腳本。
2.IE瀏覽器運(yùn)行注意點(diǎn)
首先需要下載一個IEDriverServer.exe工具然后放置在任意位置,記錄相應(yīng)的存放path
設(shè)置瀏覽器啟動路徑System.setProperty("webdriver.ie.driver", "存放IEDriverServer.exe的path");
啟動程序開始執(zhí)行
3.Chrome瀏覽器運(yùn)行注意點(diǎn)
首先需要下載一個chromedriver.exe模擬Chrome瀏覽器的工具,放在任意位置,記錄相應(yīng)的存放path
設(shè)置瀏覽器啟動路徑System.setProperty("webdriver.chrome.driver", "存放chromedriver.exe的path");
啟動程序開始執(zhí)行
4.FireFox瀏覽器中運(yùn)行注意點(diǎn)
直接安裝了FireFox瀏覽器,并且Selenium對FireFox有非常好的支持,所以不需要下載其余的模擬器進(jìn)行執(zhí)行驗(yàn)證。
如果你的FireFox沒有默認(rèn)安裝,即改變了默認(rèn)的安裝路徑需要設(shè)定運(yùn)行變量,不然FireFox不會被正常啟動的。
System.setProperty("webdriver.firefox.bin", "FireFox的安裝路徑");
啟動程序開始執(zhí)行