UI自动化测试
小星jeff
测试老兵一枚,精通测试方法理论,自动化测试框架设计,熟悉java、ruby,python。
展开
-
linux在线安装mysql
https://www.cnblogs.com/zkhbalance/p/9084807.html如果root远程有密码 最后一步GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' , 123456设置的密码转载 2020-06-04 15:33:40 · 181 阅读 · 0 评论 -
自动化测试之多类型浏览器支持
selenium 2 支持多浏览器,通过不同的driver方法来启动不同的浏览器。在设计框架的时候如果将这个考虑进去,可以很方便地在不同浏览器间切换,就可以方便地进行兼容性测试。 对浏览器的操作我们单独创建一个类Browser,startBrowser方法中加载不同driver,代码如下:public class Browser { public static WebDriver drive原创 2016-10-19 21:37:38 · 1411 阅读 · 0 评论 -
通过ruby脚本修改文件名后缀
最近做在自动化测试的时候,按照用例描述需要用notepad来打开一个excel文件,并且去检查每行数据是否正确换行。我们知道notepad一般是用来打开txt文件的。而我们做自动化测试是不会去操作某个工具打开这个文件的。所以按照这个思路,需要先改变这个excel文件成txt文件,然后用ruby本身的File.open方法打开这个txt文件,在通过each_line方法将每行数据取出存入一个数组中,再原创 2017-01-18 18:07:01 · 2580 阅读 · 0 评论 -
selenium 处理js行为的方法
我们在进行ui自动化的时候,经常会遇到如果直接进行click操作,会发现无法点击成功。通过对浏览器的开发者工具发现其实这个click是调用了js方法的。所以在处理某些普通操作无法得到正常结果的时候,我们得通过js方式来完成。 1、js点击profile = Selenium::WebDriver::Firefox::Profile.new$driver = Selenium::WebDriver原创 2017-08-02 11:08:57 · 4726 阅读 · 0 评论 -
自动化测试之元素操作
当定位好页面元素后,在自动化测试中就需要对该元素进行操作。在selenium中已经定义了不少方法,常用的如:click、tag_name、attribute、text、send_keys、clear、enabled?、displayed?、submit、location等等。通过字面也能理解该方法的作用,查看selenium的源码也能通过注释知道作用: # Get the text con原创 2017-12-05 12:34:18 · 780 阅读 · 0 评论 -
自动化测试之页面元素组织
UI自动化的基本操作就是对页面元素的操作。selenium元素的识别可通过id,name,css,class,xpath等方式来定位,而我在工作中最常用的就是xpath。xpath定位十分灵活,在一段xpath中可以使用多个标签属性来定位,如果目标元素的所有属性都一致,还可以通过父标签,祖标签,和同级标签的不同来区别定位。 一个页面进行自动化操作的第一步就是将该页面的所有元素通过某种定位方式,组原创 2017-11-28 12:25:06 · 472 阅读 · 0 评论 -
python设置全局可访问的driver对象方法
最近项目要用Python来写自动化,我根据之前现有的Ruby框架来重写。发现一个最大的区别,全局变量,Ruby是可以全工程可见,而Python只能在当前py文件内容可见。其实在开发中我们都会要求尽量少用全局变量,以避免带来的不可预见的问题。但是在做selenium框架时,driver对象的必须全工程访问的。所以按照之前ruby的写法,$driver,一处声明,全局可用就不行了。 driver对象的...原创 2018-05-23 15:40:22 · 7681 阅读 · 1 评论 -
Windows开启winrm服务
转载自:https://www.cnblogs.com/weloveshare/p/5753139.html因为进行远程powershell管理必须需要启用winrm的服务,所以需要在windows平台上启用winrm服务winrm service 默认都是未启用的状态,先查看状态;如无返回信息,则是没有启动;winrm enumerate winrm/config/listener...转载 2018-09-30 11:54:56 · 21354 阅读 · 6 评论 -
Redis消息队列在分布式自动化测试中的应用
在我们最初学习和使用selenium进行自动化的时候,肯定都是在本地IDE中进行脚本编写和执行脚本。最常用的执行方式就是使用单元测试框架,如java的testng,ruby的rspec,python的unittest。当我们在IDE中执行的时候其实是多个用例串行执行的,如果进行单元测试,其实这样做是无所谓的。毕竟代码级别的执行效率是很快的。再多的用例很快也能执行完成。但是如果是执行UI自动化脚本,...原创 2018-12-27 16:04:58 · 751 阅读 · 0 评论 -
Testng 执行maven程序无法取得自定义环境变量问题
我们的自动化测试框架使用mave来创建项目并进行管理的。当我导入项目后,执行testng的xml的时候,总是报空指针错误!在代码中发现是无法取到系统环境变量,而这个环境变量是在mave的pom文件里自定义的。如果通过maven test来执行是没有问题的。但是testng执行就始终无法获取这个环境变量。网上几乎全是通过maven test来执行,没发现testng执行的方法。自己研...原创 2019-03-28 11:34:13 · 624 阅读 · 0 评论 -
chrome与chromedriver 版本一致的问题
selenium 2 通过chromedriver来启动chrome进行测试。最近在升级chrome后发现通过之前的driver无法正常启动或者加载页面。提示错误: unknown error: Runtime.executionContextCreated has invalid ‘context’: {“auxData”:{“frameId”:”7016.1”,”isDefault”:true原创 2016-10-26 16:35:57 · 11325 阅读 · 2 评论 -
xpath相对当前节点定位方法总结
XPath轴(XPath Axes)可定义某个相对于当前节点的节点集: 1、child 选取当前节点的所有子元素 2、parent 选取当前节点的父节点 3、descendant 选取当前节点的所有后代元素(子、孙等) 4、ancestor 选取当前节点的所有先辈(父、祖父等) 5、descendant-or-self 选取当前节点的原创 2015-11-09 12:29:25 · 9873 阅读 · 0 评论 -
自动化测试之测试数据准备
无论我们做手工测试还是自动化测试,测试数据的准备都是必须的过程。而自动化的测试数据准备又有其特殊性,就是数据的可重复利用。因为脚本的执行跟人工的最大区别就是,它只会重复地机械地执行一个动作。而它最大的好处就是,公正。如果脚本failed了,那肯定是哪里出了问题,但这个问题不一定是bug。 测试数据的准备又可以叫做测试的前提条件的准备。比如我们要测一个客户加入一个会员的业务。那么我们原创 2016-10-10 21:46:09 · 4432 阅读 · 0 评论 -
自动化测试页面上对hidden控件的处理
我们在进行自动化测试时,经常需要对页面的元素进行定位取值。如果该元素是enable的可以很方便定位。但是有时需要定位hidden的元素,直接定位就成了问题。<input type="hidden" value="147.86" name="total_plan_amount">如果通过firebug或者其他工具发现是hidde类型的元素。首先需要通过它上级取得“innerHTML”。比如下面的htm原创 2015-07-08 12:39:13 · 3648 阅读 · 0 评论 -
通过HTML节点的值来定位页面元素
<td class="lbl">Override User</td>取得该节点的值可以使用text(),如果要用节点值来定位页面元素,xpath写成”//td[text()=’Override User’]/”,也可以这样写”//td[.=’Override User’]/”原创 2015-07-15 17:01:53 · 808 阅读 · 0 评论 -
如何识别页面加载过程中出现的元素
一般情况下selenium都是在每次页面加载完毕后才能识别页面元素。比如在我们经常遇到的等待提示。当加载完毕后,这个提示也就会自动消失。所以当我们要检查这个提示是否正常的时候,一般的selenium处理过程是无法获取这个元素的。我们在这里的解决思路就是,当提示出现后就提前停止加载,这样selenium检查到加载完毕就开始去识别页面上的元素。 在需要停止加载的地方我们执行下面一条js语句:drive原创 2016-03-07 13:50:34 · 984 阅读 · 0 评论 -
无法直接定位的树形结构复选框处理
最近在处理一个DIV中的树形选项时,发现用firebug的定位工具无法选中里面的每个单项,只能定位到DIV层。原来我想的是通过每个复选框的标签值来区别不同的复选框,从而实现通过参数动态定位到想选中的复选框。但是通过查看html发现复选框的text并不在这个input里面,而是<input id=xx,name=xx,...,type="checkbox">text<br>如果一个input外面有一原创 2016-02-23 20:57:05 · 1126 阅读 · 0 评论 -
自动化测试之准备篇
很多公司就在想进行自动化测试,特别是在看到很多公司的测试人员招聘时,会写上熟悉自动化测试,熟悉java、Python、ruby,熟悉Linux系统操作等等。但是其实真正招到的人还是进行手工测试,无非也就偶尔跑跑loadrunner。其实在大多数国内企业没有环境去静下心来进行自动化测试。其实大多数企业都希望快速交付,快速响应,寄希望于自动化测试来提供测试效率,缩短测试时间。但是这是需要在建立起一套高原创 2016-02-23 20:59:44 · 1090 阅读 · 0 评论 -
如何让测试代码适应多个版本
最近在项目中遇到一套脚本需要在不同产品版本上测试的情况,而这两个版本在UI设计上存在不同的元素。这样只根据一个版本写的代码在另一个版本执行时,就会失败。如果两个版本会频繁测试,那每次这些脚本都会失败,而每次人工去triage失败的case显得很麻烦。有两种方式去处理。如果只是简单的UI元素不同,那么通过if 去判断不同元素是否存在来区别版本。if element1.exist? doi原创 2015-11-17 21:47:41 · 747 阅读 · 0 评论 -
datacollection在自动化测试中的应用
datacollection是规范测试数据的一种方式。叫法其实都无所谓,你也可以给它取其他的名字。它的本质就是利用一个hash,将我们要准备的测试数据字段,提前规范好,包括这个测试模块要用的到测试字段的数量和名称。这样在团队协作过程中便于对方法的理解,避免重复定义。它其实也是在以前的框架中测试数据和执行代码之间加了一层,我们可以叫它数据控制。这样代码不直接读取测试数据文件中的数据,而是读取这个da原创 2015-11-02 12:28:03 · 664 阅读 · 0 评论 -
对于节点值会变化的元素判断
页面上在某些情况下会出现相应的提示。开始使用代码去判断该元素是否存在。但是在运行时发现无论如何它提示都是存在的。通过firebug查看它的HTML如下:<tr><td id="_error_message" class="errorMsg" name="_error_message"></td></tr>后来改为通过判断节点的值是否为空,即text()=”。结果达到我们想要的效果。原创 2015-07-17 13:53:52 · 517 阅读 · 1 评论 -
selenium 处理多浏览器测试
我们知道在处理多个页面的时候,如弹出框,我们可以通过 switch_to.window来切换窗体。原创 2016-08-15 12:28:30 · 1917 阅读 · 0 评论 -
yaml随笔记(一)
customer_info: first_name:'ANE48257' last_name:'Jeff'以上是一段yaml代码。在ruby中需要将first_name的值赋给变量。但实际发现得到的是key,即“first_name”,而非我们想要的value,“ANE48257”。起初感觉莫名其妙,而后偶然发现是一个很小的疏忽造成的。将代码修改一下:customer_info: fir原创 2015-07-08 09:52:48 · 394 阅读 · 0 评论