7.通过Css进行定位(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错误现场保存方法(截屏和记录日志)
知晓了如何定位元素,我们可以触发页面上相应的BOM事件了。
那么当执行页面响应的自动化操作的时候发生了错误我们应该怎样才能更好的记录相应的错误呢?记录Log日志和保存相应的屏幕错误信息。
1.首先记录log日志,可使用为java量身定做的log4j进行日志记录(我的另外一篇Log4j如何实现日志分模块,分天,分错误级别进行记录)
2.截取错误发生时的屏幕,这样可以很快的定位错误发生前的操作和错误发生时的错误信息了。
分享一段执行截屏的java代码。
/*截屏操作,遇到错误自动截屏存储到指定位置。
* 指定保存的路径,然后通过 TakesScreenshot 的 getScreenshotAs进行截屏操作。
* WebElement 继承 TakesScreenshot 这个大能耐焊好的基于了浏览器,返回当前的状态
* ——整个当前的HTML元素内容
* ——可视化部分的HTML元素
* */
public static void captureScreenshot(String arg0,WebDriver driver){
if(PrivateDataSource.Debug){
logger.debug("调试截图功能,并把截图存储到:"+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.向浏览器注入一段可执行的JavaScript脚本
在很多情况下我们需要程序触发一段JavaScript脚本,首先我们需要注册相应的JavaScript到浏览器中然后触发执行。
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);//为这个元素添加可执行的js
((JavascriptExecutor)driver).executeScript("arguments[0].onclick=function(){SelectMenu(this,'AirLineSeasonManage.aspx?TimeStamp=' + TimeStamp());}", ele);//为这个元素添加可执行的js
ele.click();
以上代码首先找到相应的元素
然后向相应的元素里面注入一段可执行脚本
后点击该元素执行这个JavaScript脚本。
2.IE浏览器运行注意点
首先需要下载一个IEDriverServer.exe工具然后放置在任意位置,记录相应的存放path
设置浏览器启动路径System.setProperty("webdriver.ie.driver", "存放IEDriverServer.exe的path");
启动程序开始执行
3.Chrome浏览器运行注意点
首先需要下载一个chromedriver.exe模拟Chrome浏览器的工具,放在任意位置,记录相应的存放path
设置浏览器启动路径System.setProperty("webdriver.chrome.driver", "存放chromedriver.exe的path");
启动程序开始执行
4.FireFox浏览器中运行注意点
直接安装了FireFox浏览器,并且Selenium对FireFox有非常好的支持,所以不需要下载其余的模拟器进行执行验证。
如果你的FireFox没有默认安装,即改变了默认的安装路径需要设定运行变量,不然FireFox不会被正常启动的。
System.setProperty("webdriver.firefox.bin", "FireFox的安装路径");
启动程序开始执行