测试——Selenium

打印 上一主题 下一主题

主题 940|帖子 940|积分 2820

内容大纲:
  什么是自动化测试
  什么是Selenium
  Selenium工作原理
  Selenium情况搭建
  Selenium API
  目录
1. 什么是自动化测试
2. 什么是Selenium
3. Selenium工作原理
4. Selenium情况搭建(java)
5. Selenium API
5.1 定位元素 
5.1.1 CSS选择器定位元素
5.1.2 XPath定位元素
5.1.3 标签定位元素
5.2 操纵测试对象 
5.3 添加等候
5.3.1 逼迫等候sleep
5.3.2 隐式等候(更保举)
5.3.3 显示等候
5.4 打印信息
5.4.1 打印title
5.4.2 打印url
5.5 欣赏器的操纵
5.5.1  欣赏器最大化
5.5.2 设置欣赏器的宽高
5.5.3 操纵欣赏器的前进、后退
5.5.4 控制欣赏器滚动条
5.6 键盘事件
5.6.1 回车
5.6.2 组合 (A+C+V)
5.7 鼠标事件(右击)
5.8 窗口
5.9 截图
6. 几个小案例
6.1 定位一组元素
6.2 窗口定位
6.3 下拉框处理惩罚
6.4 定位弹窗
6.5 上传文件


1. 什么是自动化测试

将人工要做的测试工作进行转换,让代码去实行测试工作,这样是为了进步测试服从,进步测试产物的质量
2. 什么是Selenium

做UI自动化测试的一个工具
3. Selenium工作原理

 

三个角色:


  • 自动化脚本代码(在idea里面写的代码)
  • 驱动:有个这个驱动就可以对页面进行操纵
  • 欣赏器
4. Selenium情况搭建(java)

在此不详细阐明......
引入的依赖:
  1.         <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
  2.         <dependency>
  3.             <groupId>org.seleniumhq.selenium</groupId>
  4.             <artifactId>selenium-java</artifactId>
  5.             <version>3.141.59</version>
  6.         </dependency>
复制代码
 
 
 
5. Selenium API

5.1 定位元素 

5.1.1 CSS选择器定位元素



  • 类选择器: .class值(.s_ipt)
  • id选择器: #id值(#kw)
  • 父类选择器 子类选择器: 父类选择器表达式 子类选择器表达式(#s_kw_wrap #kw)
  • 标签选择器:标署名(form)
举例阐明:


 
 ③



 
5.1.2 XPath定位元素



  • 相对路径+索引://form/span[1]/input
  • 相对路径+属性值://input[@class="s_ipt"]
  • 相对路径+通配符://*[@*="s_ipt"]
  • 相对路径+文本匹配://span[text()=""]
举例阐明:



 





 

5.1.3 标签定位元素

 

   问:CSS选择器和XPath选择器,,哪个服从更高?
  CSS 
  
5.2 操纵测试对象 



  • click点击对象
  • send_keys 在对象上模拟按键输入
  • clear 清晰对象输入的文本内容
  • submit 提交
  • text用于获取元素的文本信息 

   getText和getAttribute: 
  

  getText'获取的元素在:
  

  getAttribute获取的元素是一个属性值:
  

    问:submit和click之间的区别:
  submit操纵的元素需要放在form标签中,否则会报错
  click没有这个限定(更保举)
  

  

  此时submit报错
  
  
5.3 添加等候

5.3.1 逼迫等候sleep

 


5.3.2 隐式等候(更保举)

 

5.3.3 显示等候

 


5.4 打印信息

5.4.1 打印title

 

5.4.2 打印url

 

 

5.5 欣赏器的操纵

5.5.1  欣赏器最大化

 

5.5.2 设置欣赏器的宽高

 

5.5.3 操纵欣赏器的前进、后退

 

5.5.4 控制欣赏器滚动条


 

5.6 键盘事件

5.6.1 回车



5.6.2 组合 (A+C+V)



5.7 鼠标事件(右击)



5.8 窗口

当前的窗口:

获取所有窗口:

切换窗口:
 


5.9 截图

引入依赖:
  1.         <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
  2.          <dependency>
  3.             <groupId>commons-io</groupId>
  4.             <artifactId>commons-io</artifactId>
  5.             <version>2.15.1</version>
  6.         </dependency>
复制代码

 
6. 几个小案例

6.1 定位一组元素

描述:
 让矩形框的都勾上
  1. private static void Page01(){
  2.         WebDriver webDriver = new ChromeDriver();
  3.         webDriver.get("http://localhost:63342/0720-test/Page/test01.html?_ijt=g2mlnu74s9004ua0282u8h05lg&_ij_reload=RELOAD_ON_SAVE");
  4.         List<WebElement> webElements = webDriver.findElements(By.cssSelector("input"));
  5.         for (int i = 0; i < webElements.size(); i++){
  6.             if (webElements.get(i).getAttribute("type").equals("checkbox")){
  7.                 webElements.get(i).click();
  8.             }
  9.         }
  10. }
复制代码

6.2 窗口定位

描述:
点击click
  1. private static void Page02() throws InterruptedException {
  2.         WebDriver webDriver = new ChromeDriver();
  3.         webDriver.get("http://localhost:63342/0720-test/Page/test02.html?_ijt=csarghoqcdtbu2pd8sdrhhka8v&_ij_reload=RELOAD_ON_SAVE");
  4.         webDriver.switchTo().frame("f1");
  5.         sleep(3000);
  6.         webDriver.findElement(By.cssSelector("body > div > div > a")).click();
  7. }
复制代码

6.3 下拉框处理惩罚

描述:
选择其它
  1. private static void Page03() throws InterruptedException {
  2.         WebDriver webDriver = new ChromeDriver();
  3.         //打开目标网页
  4.         webDriver.get("http://localhost:63342/0720-test/Page/test03.html?_ijt=j61coa63ol45u8trp3tr5rjirr&_ij_reload=RELOAD_ON_SAVE");
  5.         /**
  6.          * 方法一:借助Select对象
  7.          */
  8.         WebElement webElement = webDriver.findElement(By.cssSelector("#ShippingMethod"));
  9.         sleep(3000);
  10.         Select select = new Select(webElement);
  11.         //通过序号选中选项,下标从0开始
  12.         //select.selectByIndex(3);
  13.         //sleep(3000);
  14.         /**
  15.          * 方法二:通过值
  16.          */
  17.         select.selectByValue("8.34");
  18. }
复制代码

6.4 定位弹窗

描述:

输入:某某.点击确认
 
  1. private static void Page04() throws InterruptedException {
  2.         WebDriver webDriver = new ChromeDriver();
  3.         webDriver.get("http://localhost:63342/0720-test/Page/test04.html?_ijt=hfa18g211latukccpp96p1gl28&_ij_reload=RELOAD_ON_SAVE");
  4.         sleep(3000);
  5.         webDriver.findElement(By.cssSelector("body > button")).click();
  6.         sleep(3000);
  7.         //点击了弹窗里面的取消
  8.         webDriver.switchTo().alert().dismiss();
  9.         //点中弹窗
  10.         webDriver.findElement(By.cssSelector("body > button")).click();
  11.         String name = "momo";
  12.         //输入某某
  13.         webDriver.switchTo().alert().sendKeys("momo");
  14.         sleep(3000);
  15.         //弹窗确认
  16.         webDriver.switchTo().alert().accept();
  17.         //校验
  18.         String text = webDriver.findElement(By.cssSelector("body > div:nth-child(5)")).getText();
  19.         if (text.equals(name)){
  20.             System.out.println("测试通过");
  21.         }else {
  22.             System.out.println("测试不通过");
  23.         }
  24. }
复制代码

6.5 上传文件

描述:

选择文件之后:

  1. private static void Page05() throws InterruptedException {
  2.         WebDriver webDriver = new ChromeDriver();
  3.         webDriver.get("http://localhost:63342/0720-test/Page/test05.html?_ijt=c69p92i1r4598lea74dko8r147&_ij_reload=RELOAD_ON_SAVE");
  4.         sleep(3000);
  5.         //上传文件
  6.         webDriver.findElement(By.cssSelector("body > input[type=file]")).sendKeys("C:\\Users\\27695\\Desktop\\bit\\3.MySQL\\01 MySQL安装与配置.pdf");
  7. }
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表