- Selenium + Python 自动化测试环境搭建
- 怎样开始用selenium进行自动化测试(个人总结)
- 关于学习selenium进行自动化测试所需要学的知识
- Selenium 使用介绍
- Selenium 命令列表
- Selenium 快速入门
- Web软件测试工具Selenium:如何选取元素
- Selenium RC在浏览器兼容性测试的用武之地
- selenium开源功能测试工具
- Selenium执行测试脚本稳定性的一些经验分享交流
- Web测试工具Selenium入门心得
- Selenium自动化测试用例设计注意事项(一)
- 基于TestNG 与Selenium 的自动化测试设计与实施
- 毁三观的 Selenium 自动化测试框架
- Selenium自动化测试用例设计注意事项(二)
- 用Selenium实现页面自动化测试
- Selenium实战:.Net下的自动化测试搭建
- 用 Selenium 自动化验收测试(一)
- 用 Selenium 自动化验收测试(三)
- 使用开源工具SeleniumRC进行功能测试
- 用 Selenium 自动化验收测试(二)
- 用 Selenium 自动化验收测试(四)
- 应用Selenium和Ruby进行面向领域的Web测试
- WebTest比拼Selenium:模拟和真实浏览器上的测试
- Selenium实例:AJAX自动化测试应用
- Selenium-集成测试工具
- 基于FireFox的测试插件 – Selenium IDE
- 基于Selenium和VSTT的网站测试自动化系统
- selenium参考手册中文翻译
- 《Selenium2自动化测试实战–基于Python语言》
- selenium webdriver (python) 第三版
- selenium-webdriver(python) (十六) –unittest 框架
- selenium webdriver (python) 第一版PDF
- selenium-webdriver(python) (十五) — 鼠标事件
- selenium-webdriver(python) (十四) — webdriver原理
- selenium-webdriver(python) (十三) — cookie处理
- 轻松自动化—selenium-webdriver(python) (十二)
- 轻松自动化—selenium-webdriver(python) (十一)
- 轻松自动化—selenium-webdriver(python) (十)
- 轻松自动化—selenium-webdriver(python) (八)
- 轻松自动化—selenium-webdriver(python) (七)
- 轻松自动化—selenium-webdriver(python) (六)
- 轻松自动化—selenium-webdriver(python) (五)
- 轻松自动化—selenium-webdriver(python) (三)
- 轻松自动化—selenium-webdriver(python) (二)
- 轻松自动化—selenium-webdriver(python) (一)
- 译:selenium webdriver (python)
- 菜鸟学自动化测试(九)—-WebDirver
- 菜鸟学自动化测试(八)—-selenium 2.0环境搭建(基于maven)
- Selenium3.0 自动化测试
- JavaScript(Node.js)+ Selenium自动化测试
- selenium操作隐藏的元素
- selenium处理select标签的下拉框
- 在Python中实现PageFactory模式
- 《selenium2 Java 自动化测试实战(第二版)》 更新2016.5.3
- 基于selenium的pyse自动化测试框架
- 自动化基础普及之selenium是啥?
- 在做自动化测试之前你需要知道的
- 自动化测试如何解决验证码的问题
- 菜鸟学自动化测试(六)—-selenium 命令之文字范本匹配
- 菜鸟学自动化测试(五)—–selenium命令之定位页面元素
- 菜鸟学自动化测试(四)—-selenium 命令之验证页面元素
- 菜鸟学自动化测试(三)—-selenium 命令
- 菜鸟学自动化测试(二)—-selenium IDE 功能扩展
- 菜鸟学自动化测试(一)—-selenium IDE
- selenium RC 环境配置
- Selenium的基本使用
- 敏捷自动化测试
- Web测试工具Selenium入门心得
Selenium的基本使用
一、Selenium的Java编程基本语法
在Selenium的基本语法中首先是需要定位到页面元素的,Selenium通过找寻到界面元素然后触发相应的时间,通过页面元素变化判断是否执行了相应的操作。
可以通过页面元素的属性获取相应的页面元素。
1.通过Identifier(id)定位元素
所给出的定位的HTML元素必须要有identifier,如果没有就会报告未找到相应元素的错误。通过ID来标识可以确定唯一性。
WebElement ele = By.id("idName");
只有当你明确知道元素的id属性,才能使用。
2.通过Name定位元素
使用id定位元素固然方面,但是id并不是html元素必须的,我们可以使用Name定位元素位置。
使用Name定位元素的位置,会匹配第一个与Name匹配的元素。如果页面中有多个相同的Name,可以使用更多的筛选器进行元素筛选的细化。
WebElement ele = By.Name("name");
只有明确知道原属的那么,才能使用。
3.通过Xpath定位元素
在一些情况下无法得知页面元素的id和name,还可以使用xpath从已知节点开始定位相应的元素。
绝对路径进行定位 xpath=/html/body/form[1]
通过元素的相应属性定位例如xpath=//form[@id='loginForm'] 表示从根节点开始查找一个form元素她包含一个属性是id并且里面的值为loginForm
找到某一个元素下相应的子元素 xpath=//form[input/@name='username'] 找到Form表单下面的input元素并且该元素有一个属性name且该name的值是username。
找到第一个指定的元素 xpath=//input[@name='username'] 扎到第一个input元素里面有一个name属性并且该属性值为username
还可以使用更加细分的查找 xpath = //input[@name='continue'][@type='button'] 找到input标签,1.该标签有一个name=continue属性和type=button属性的元素。
4.通过连接定位元素
WebElement ele = By.LinkText("xxxx");
当知晓相应的链接类容就可以定位到相应的元素。
5.通过DOM元素定位元素
DOM元素是HTML的基本元素,而且只有dom定位可以直接通过document
dom=document.getElementById('loginForm')
dom=document.forms['loginForm']
dom=document.forms[0]
document.forms[0].username
document.forms[0].elements['username']
document.forms[0].elements[0]
document.forms[0].elements[3]
6.通过tagName,通过标签名称进行定位
List eles = By.TagName("tagname");
在一个页面中相同的tag标签太多了,如果仅适用单个tagname查询会找到一个列表。
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的安装路径");
启动程序开始执行。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论