selenium自动化测试教程,selenium自动化测试实战
Web UI自动化测试之Selenium3
一、WebDriver(import org.openqa.selenium.WebDriver)操作浏览器
selenium通过WebDriver对象来定位页面元素
1、打开浏览器
打开火狐浏览器:
WebDriver driver = new FireFoxDriver();
打开IE浏览器:
WebDriver driver = new InternetExplorerDriver();
打开chrome浏览器
WebDriver driver = new ChromeDriver();
2、最大化浏览器
driver.manage().window().maximize();
3、关闭浏览器
driver.close();
driver.quit();
4、打开测试页面
driver.get("http:");
二、By(org.openqa.selenium.By) 定位页面元素
selenium通过By对象来定位页面元素
1、By.id 通过ID定位页面元素
By.id("UserCode")
2、By.name 通过name定位页面元素
By.id("UserCode")
3、By.className 通过className定位页面元素
By.className("input_class")
4、By.linkText 精确查找
drive.get("");
By.linkText("百科");
5、By.partialLinkText 模糊查找
driver.get("");
By.partialLinkText("百科");
6、By.tagName
dirver.get("");
By.tagName("input");
三、WebElement(org.openqa.selenium.WebElement)操作页面元素
selenium通过WebElement对象来操作页面元素
1、操作输入框
WebElement inputElement = driver.findElement(By.id("UserCode"));//查找登录页面录入用户名元素
inputElement.setKeys("wyl");//输入框录入用户名wyl
inputElement.clear();//清空输入框
inputElement.getText();//获得输入框中的内容
2、操作单选框
WebElement radioElement = driver.findElement(By.id("Orders"));
radioElement.click();// 选择某个单选项
radioElement.clear();// 清空某个单选项
radioElement.isSelected();// 判断某个单选项是否已被选择
3、操作多选框
WebElement checkboxElement = driver.findElement(By.id("Orders"));
checkboxElement.click();// 选择某个多选项
checkboxElement.clear();// 清空某个多选项
checkboxElement.isSelected();//判断某个多选项是否已被选择
4、操作下拉框
Select select = new Select(per.findElement(By.id("region")));
select.selectByVisibleText("北京市");
select.selectByText("10010");
select.deselectAll();
select.deselectByVisibleText("北京市");
select.deselectByText("10010");
select.getAllSelectedOptions();
select.getFirstSelectedOption();
5、操作上传文件
WebElement uploadElement = driver.findElement(By.id("file"));
String uploadFile = "D:1AgentCode.txt";
uploadElement.setKeys(uploadFile);
6、操作按钮
WebElement btnElement = driver.findElement(By.id("add"));
btnElement.click();
btnElement.isEnabled();
7、表单提交
WebElement formElement = driver.findElement(By.id("fm"));
fromElement.submit();
8、操作弹出对话框
Alert alert = driver.swichTo().alert();
alert.getText();//获得弹出框内容
alert.accept();//点击弹出框确认按钮
alert.dismiss();//点击弹出框取消按钮
9、Windows和Frames之间的切换
driver.switchTo().defaultContent();//返回到最顶层的frame
driver.switchTo().frame("leftMenuFrame");//切换到左侧菜单frame
driver.switchTo().window("windowName");//切换到某个windows
10、超时设置
driver.manage().timeouts().implicitly(10,timeUnit.Seconds);//识别元素时的超时时间
driver.manage().timeouts().pageLoadTimeout(10,timeUnit.Seconds);//页面加载时的超时时间
driver.manage().timeouts().setScriptTimeout(10,timeUnit.Seconds);//异步脚本的超时时间
四、调用js
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("JS脚本");
五、Selenium官方
1、官方download包下载地址
2、官方User Guide
3、API
怎样开始用selenium进行自动化测试
作为一个之前没接触过selenium的新手来说,如果之前有过写代码的经验,那么学习起来就会更加快速!但无论如何,开始总是比较难的!
我也是从一个接近纯24K小白成长起来的,一步一个脚印,在这个过程中我学习到了很多新的知识,有了新的突破,新的成长,不断地努力,不断地尝试,不断地总结经验,让我一直走到了今天,未来,还有很多路要走!义无反顾,我的测试之路!
所以,今天抽空回顾一下我的selenium学习过程,也就是,selenium自动化测试怎么开始,这些,是我的个人经验,分享出来给大家参考!
一开始,基本上很多人都是用selenium IDE录制脚本开始的,我也是!有一本书写得很不错:selenium初学者指南!So,从录制回放开始我的selenium,而在这个过程中,不断地去补充我的html css知识,熟悉selenium的api!
慢慢地,发现录制的脚本在回放的时候经常报错,通过检查发现,是定位上的错误,导致这种定位的错误的最大原因是系统前端采用了某种框架,如tigerUI,exj....所以HTML里面的标签很多都是动态的,比如id,class,name!这对selenium操作定位的元素而进行自动化来说是致命伤!
所以,开始自己写定位信息,这已经是必须的了!从而学习了xpth和css选择器,掌握了更加有效,快速和稳定地定位页面上的元素(定位的时候难免会碰到有iframe,这就得先切换到iframe中再进行定位了)!也就是,在selenium IDE上写脚本!
信心满满地在selenium IDE上写了长长地一段脚本,并且反复跑都能成功!总算尝到了一点点幸福的滋味!然后呢,问题来了,当我要修改和扩展这段的脚本的时候,才发现这效率是相当地低!一句句查!一句句改!多么痛的领悟!
另外,selenium IDE 默认启动的是火狐,在使用selenium RC 启动 IE 进行跑脚本时浏览器总是会报错!各种搞不定,各种不淡定!决定放弃使用IDE!
selenium有一个强大之处就是支持多种语方:java,C#,python等等,并且可以把录制的脚本转换成代码!我用的是java,果断走起!
不用说,当然是把脚本转为java代码了,在Eclipse中重新开始搞!
选择一个测试框架:有Junit和TestNg两个选择,公司用的是junit,所以,不用多说,我就用junit验证selenium脚本的运行结果!并且,Junit和TestNG都可以生成比较直观的测试报告!
写好一些代码,会看到整段代码中密密麻麻充斥着基本相同的代码:开始封装代码!把常用到API封装起来!封装好之后代码看着就舒服多了!
接下来,是不是也应该把代码中的定位信息用一个专门的文件放起来,再去读取里面的定位信息,这样,维护代码和维护定位信息就放在了两个地方,不用老是扎在代码和定位路径中,简单地分一下层!果断尝试!
到这里,脚本写出来了,常用的api封装起来了,定位路径分离出来了!整个代码简洁多了!写起来容易和舒服多了!这时候,该个性化定制一下自己的框架了,这里,就暂时不写下去了,已经离怎样开始selenium挺远的了!或许,到了这一步,你早就有自己对测试框架的想法和对脚本的设计方法了。。。。加油吧,把想法化为实际的动力,继续向前!
selenium自动化原理
使用selenium webdriver实现自动化:
1,首先要有自动化测试脚本(python实现)
2,安装浏览器
3,对需要控制的浏览器安装驱动
工作过程:
脚本(python文件--客户端)----》驱动程序(发送json串)----》浏览器
浏览器:内部提供了操作页面的接口,它收到了json串后,去触发相关的操作
(点击、输入等)