关注一下UI自动化,记一记笔记。

UI自动化的优缺点:

  关于UI自动化的优缺点想来大家都有了解,优点:解放人力(并不是完全解放),用机器(涵盖工具、脚本等)代替人工完成测试工作,将测试用例转化为脚本实现,其大部分的使用阶段在回归测试阶段。缺点:难维护,依赖于前端。

  web端混的风生水起的非Selenium莫属,app端的Uiautomator、appium等等。

UI自动化的核心:

  UI自动化的核心还是定位元素。

Web端“一哥”--Selenium:

了解一项技术,最权威的依然是官方文档,贴传送门:https://www.seleniumhq.org/docs

Selenium工作原理:

  当下用的最多的还是webdriver,那么webdriver是什么东西呢?用来干什么?在web端的UI自动化过程中充当了什么角色?

  webdriver是C/S架构的一套工具,client是编写的自动化脚本代码,server就是由webdriver.exe启动的浏览器,监听来自client发送的消息,并且对其做出响应,从而实现对浏览

器的操作。

  通俗一点webdriver就是快递公司,代码是快递信息,快递员是浏览器。

  寄快递的时候首先要明白的是要通过哪家快递公司去承运(浏览器应该用chrome还是firefox、IE),选好快递公司之后肯定要写清楚收件人的姓名、地址、电话号码(执行代码中要明确请求URL、触发时间、按钮、输入文本等),快递公司会将这些信息传达给快递员,快递员进行送件;其工作机制可能有些许差别,但是理解容易点,大部分都是异曲同工。

有关webdriver和浏览器的不适配问题碰到不止一次有人问,下方贴了chrome和firefox的全部信息,都是百度来的,当个苦力综合一下:

chrome浏览器历史版本下载地址:https://www.chromium.org/getting-involved/dev-channel(国外版)

               https://www.chromedownloads.net/(国内版)

               http://npm.taobao.org/mirrors/chromedriver/

Firefox浏览器历史版本下载地址:http://ftp.mozilla.org/pub/firefox/releases/

chrome驱动下载地址:http://chromedriver.storage.googleapis.com/index.html

Firefox驱动下载地址:https://github.com/mozilla/geckodriver/releases

chrome驱动与浏览器对应表:

        chromedriver版本 支持的Chrome版本
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

以Selenium官方示例代码为例:

  1. // And now use this to visit Google
  2. driver.get("https://www.baidu.com");
  3. // Alternatively the same thing can be done like this
  4. // driver.navigate().to("http://www.google.com");
  5.  
  6. // Find the text input element by its name
  7. WebElement element = driver.findElement(By.name("wd"));
  8.  
  9. // Enter something to search for
  10. element.sendKeys("桃李不言、下自成蹊 博客园");
  11.  
  12. // Now submit the form. WebDriver will find the form for us from the element
  13. element.submit();
  14.  
  15. // Check the title of the page
  16. System.out.println("Page title is: " + driver.getTitle());
  17.  
  18. // Google's search is rendered dynamically with JavaScript.
  19. // Wait for the page to load, timeout after 10 seconds
  20. (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
  21. public Boolean apply(WebDriver d) {
  22. return d.getTitle().toLowerCase().startsWith("cheese!");
  23. }
  24. });
  25.  
  26. // Should see: "cheese! - Google Search"
  27. System.out.println("Page title is: " + driver.getTitle());
  28.  
  29. //Close the browser
  30. driver.quit();
  1. 注释写的很明白咯!!,就不一一翻译了。

 原文代码是访问google,改成了baidu,搜索内容以及By.name段更改了value。

 Firefox浏览器运行方式:

  1、增加浏览器安装路径

  2、增加驱动路径 

  1. System.setProperty("webdriver.firefox.bin", "F:\\Firefox\\firefox.exe");
  2. System.setProperty("webdriver.gecko.driver", "E:\\driver\\geckodriver.exe");
  3. WebDriver driver = new FirefoxDriver();

  Chrome浏览器运行方式:

  1、增加驱动路径

  1. System.setProperty("webdriver.chrome.driver", "E:\\driver\\chromedriver.exe");
  2. WebDriver driver = new ChromeDriver();

   该例有访问URL方式,定位元素方式、传值方式、一处显示等待、打印标题、关闭方式。很直观,不算太难吧?

ps:

浏览器版本与驱动版本不匹配绝对是每个人都会遇到的问题,报错原因千奇百怪。

常见的:WebDriverException: unknown error: call function result missing 'value'

更换浏览器或者驱动版本搞定:http://npm.taobao.org/mirrors/chromedriver/

UI“三重天”之Selenium(一)的更多相关文章

  1. UI自动化填写问卷(selenium)+定时任务(懒人必备)

    1.自动填报 UI自动化 selenium 开发程序动机:天天有人催着填写问卷,弄的头大.主要还是懒的每天一个个去填写内容. 开发总时长:2个小时:学习+开发+修改 遇到的小问题: 在自动化填写地图的 ...

  2. UI自动化测试简介及Selenium工具的介绍和环境搭建

    自动化测试简介 1.1何为自动化测试? 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程.换言之,就是以程序实现的方式来代替手工测试. 1.2自动化测试分类 分为功能自动化测 ...

  3. UI自动化测试框架之Selenium关键字驱动

    一.原理及特点 1. 关键字驱动测试是数据驱动测试的一种改进类型 2. 主要关键字包括三类:被操作对象(Item).操作(Operation)和值(value),用面向对象形式可将其表现为Item.O ...

  4. UI“三重天”之selenium--常用API和问题处理(三)

    Selenium常用API: 前面两篇示例代码中用到了一些selenium的API方法,例如定位元素的八种方法.访问url.等待.操作浏览器.获取title.点击.清理等等. 有关于selenium的 ...

  5. UI“三重天”之selenium--封装(二)

    基础示例代码: /** * @author Richered **/ package com.sample; import org.openqa.selenium.By; import org.ope ...

  6. UI自动化测试框架之Selenium关键字驱动 (转)

    摘要 自动化测试框架demo,用关键字的形式将测试逻辑封装在数据文件中,测试工具解释这些关键字即可对其应用自动化 一.原理及特点 1.   关键字驱动测试是数据驱动测试的一种改进类型 2.    主要 ...

  7. Ui"三重天"之重温Uiaumator(1)

    移动端自动化技术和接口自动化技术是接下来需要深究和拓展的两方面,基于之前的薄弱基础,重温一波,本篇内容便是android UI自动化框架Uiautomantor1. 介于对移动端自动化并没有实际应用的 ...

  8. UI“三重天”之实践Uiautomator1

    说起来Uiautomator也有一年没碰过了.借此来回顾.总结一下. 也是阅读<精通APP自动化测试>一书.实践出真知的一个框架.编写了部分移动端UI自动化脚本.后续再深入学习. 虽然现在 ...

  9. 【转】UI自动化测试框架之Selenium关键字驱动

    原网址:https://my.oschina.net/hellotest/blog/531932#comment-list 摘要: 自动化测试框架demo,用关键字的形式将测试逻辑封装在数据文件中,测 ...

随机推荐

  1. Gym - 101334C 3514 无向仙人掌

    http://codeforces.com/gym/101334/attachments 题意: 判断是否是仙人掌图并且连通,如果是的话则计算出它有多少个连通子图也是仙人掌. 思路:连通子图也就是我们 ...

  2. Jbuilder(3300✨)

    https://github.com/rails/jbuilder Jbuilder(3300✨) Jbuilder gives you a simple DSL for declaring JSON ...

  3. Learn Rails5.2- ActiveRecord: Migration , spring的使用(不兼容的解决办法)

    偶然一次: 运行rails generate停止不动,网上查找答案,可能是bundle update 之后 spring 版本变化了,和正在运行的 spring 实例不兼容. Spring导致的同样的 ...

  4. bzoj 3730 震波 (动态点分治)

    大意: 给定n节点树, 每个节点有权值, 边权全为1. 给定m个操作: 操作1: (0,x,k) 表示询问到节点x距离不超过k的节点权值和 操作2: (1,x,y) 表示将节点x的权值修改为y 对于所 ...

  5. python语言的优缺点

    python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路. 龟叔给Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Py ...

  6. python模块之ConfigParser: 用python解析配置文件

    在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单的做一些介 ...

  7. bzoj1024

    题意: 给你一个x*y的矩阵,让你把他用n-1次切割分成n块 要求每一块的长与宽的比值最大的最小 求这个比值(保留6位小数) 题解: 本来想用二分来做 然而n<=10 所以我们可以暴力枚举+贪心 ...

  8. bzoj2163

    题解: 拆点网络流 然后用总和-最大流 代码: #include<iostream> #include<cstring> #include<cstdio> #inc ...

  9. ISE创建Microblaze软核(一)

    在使用FPGA时,有时会用到它做为主控芯片.对于习惯于单片机及C语言开发的人,使用FPGA做主控芯片,首先还是想到它的嵌入式软核功能.如果能够基于Microblze软核进行C语言程序的开发,相对于使用 ...

  10. 《转》快速导出SSRS之RDL文件

    select name,[path],cast(cast(content AS varbinary(max)) as xml) as RDLDef from dbo.[Catalog] where t ...