0


selenium 自动化测试

** Xpath基础表达式,请参该如下**

1.菜鸟教程(基础):XPath 语法 | 菜鸟教程

2.W3school文章(基础):HTML 教程



测试工具

1,自动化功能测试工具:QTP、selenium

2,自动化性能测试功能:LoadRunner、jmeter

3,自动化接口测试工具:Charles、soapUI、LoadRunner、jmeter、fiddler、Wireshark

4,测试管理工具:禅道、qc、jira、testlink

管理需求,管理测试计划、管理测试用例、管理bug、分析bug

QTP的自动化测试

录制的原理:将被测试的对象,放在对象库中,并且给一个唯一的标识

回放的原理:将对象库中的对象与实际运行的对象进行对比,如果一致就运行,不一致就报错。

Selenium的工作原理:获取页面元素,操作页面元素

Selenium是通过什么方法获取页面上的元素:findelEment

selenium自动化

selenium基本内容

selenium组件:

①Selenium IDE:火狐浏览器,selenium中唯一能够看到界面的东西;

提供了录制、回放功能,可以将录制的步骤,转换成

各种语言,默认录制成为的语言为HTML

         ②Selenium webdriver:jar包,支持:Java、Python、C#,PHP、net、ruby;

                           通过编程语言,来执行项目的自动化

         ③Selenium RC:服务,通过cmd命令来执行

         ④Seleniumgrid:支持分布式测试用例的运行

Selenium2=selenium RC + selenium webdriver

Selenium IDE:录制,回放,可转换语言---- 图形化界面

定位元素方法:

ID、name、tagname、classname、xpath、linktext、partial link text、****css

Xpath定位表达式语法

XPath 语法 | 菜鸟教程:XPath 语法 | 菜鸟教程

层级关系

层级关系的表达:
子元素 /
子孙元素 //
父元素 /..
爷爷 /../..
兄弟元素 :

常见写法

1、描述元素拥有attr属性,如:[@attr]

2、描述 元素的attr属性的值是value,如:[@attr='value']

3、描述 元素的attr属性的值内容包含value 如:[contains(@attr,'value')]

4、表示否定 如:[not(限制条件)]

5、连接多个条件 and ,or 只不过or没有什么意义。

//input[@value='臭豆腐' or @value='烤生蚝']
//input[@type='checkbox' and @value='烤生蚝']

6、通过文本内容来进行定位

文本内容确定,如小龙龙:
[string()='小龙龙']  [text()='小龙龙']
文本内容包括,如小龙龙:
[contains(string(),'小龙龙')]  [contains(text(),'小龙龙')]

string()和text()的区别:
string()获取到的是一个元素中即使被子元素截断了文本,也会拼接起来的内容。 获取到string()内容更多
text() 获取到的是一个元素中,到下一个元素之间的纯文本。 text()内容更少。

7、序号作为限制条件 [序号] 如//input[8]

8、组合元素名、属性、内容 和元素层级关系进行定位。

先定位到文本内容为小龙龙的label,然后找他的子元素input。
//label[text()='小龙龙']//input
表示定位用户名的父元素的第二个input子元素。
//label[text()='用户名:']/../input[2]

轴定位表达式

用得最多的就是用来定位兄弟: following-sibling:弟弟preceding-sibling:哥哥 以及 先辈元素:ancestor

①表示查找 文本内容为用户昵称的label的弟弟元素 input 并且这个Input的 placeholder是请输入用户名。

//label[text()='用户']/following-sibling::input[@placeholder='密码']

②序号和谓语限制表达式同时使用,查找第一个弟弟。

//label[text()='用户']/following-sibling::input[@placeholder='密码']

③表示查找 文本内容为用户昵称的label的哥哥元素 input 并且这个Input的 placeholder是请输入用户名。

//label[text()='用户']/preceding-sibling::input[@placeholder='密码']

特殊写法:

只有行内样式style不同时xpath怎么写:

//form[not(@style='display: none;')]

同时满足符合xpath1定位但是不符合xpath2定位:

xpath1|not xpath2

注意事项:

注意xpath里面的 ' 和 " 可以混用,成对出现,但是用'' 和用""都行。

css定位表达式语法:

层级关系

层级关系的表达:

查找子孙元素:     **空格**                   如:form label

查找子元素:         >                        如:form>div

查找弟弟元素:     ~                        如:label~input

常见写法

1、拥有attr属性的任意元素,如:[attr] 对应于xpath://*[@attr]

2、拥有attr属性的tag元素,如:tag[attr] 对应于xpath://tag[@attr]

3、attr=value键值对模式,如:[attr='value'] 对应于xpath://*[@attr='value']

css选择器特有写法:

  #idValue  相当于[id='idValue']

  .showlove   相当于 [class='showlove']

  *= 表示包含  [class*='how']  表示的是元素class属性包含how,即相当于xpath中contains
   ^= 表示开头包含
   $= 表示结尾包含

4、css没有用元素内容进行定位的选择器 而xpath有://tag[text()='元素内容']

5、序号:nth-child(序号) 表示这个元素是父元素的第几个子元素(不管元素类型)

①表示要查找的是login这个div的第3个子元素,相当于xpath中的[序号]

#login>*:nth-child(3)

②表示的是查找login元素的子元素label,并且这个子元素,是div的所有子元素中的第2个。

#login>label:nth-child(2)

③表示要查找的是login这个div的第3个label子元素

#login>label:nth-of-type(3) 

有什么操作:click、sedkeys、clear

       Select:selectvisibletext(“可见文本”);

       Selectindex(索引从0开始,整数);

       Selectvalue(“HTML中的value值”);

       Switchto().Alert;跳转到弹出框

       Alert.accept,alert.dismiss弹出框的确定和取消

       refresh();刷新

       back、forward,向后、向前

       Selenium获取函数

       Gettext();获取文本

       Getattribute();获取按钮上的文本

       Gettitle();获取标题

       Geturl();获取当前网址

       Getwindowhandle();获取窗口的句柄

Console确定元素是否可以操作

原因1:需要定位的元素在页面中被隐藏了

解决办法:重新定位,通过控制台输入js脚本点击

selenium上传文件

1、如果是input 标签--input元素

如果是input元素的文件上传,可以通过Selenium当中的 send_keys 方式进行传递,

Java和python都可以用 sendkeys 上传

但是这种方式局限性比较大,如果遇到像通过 js 调用的组件会有一些问题;这个时候就需要通过一些和系统交互的方式完成上传操作,比如通过autoit、robot,pywinauto或者说pyautogui这些第三方库进行操作。

2、非input元素--如果不 是input 标签

            Java 可以用autoIT 或者robot 上传

            Python 可以用autoIT 或者pyauto  pywinauto  pyautogui上传

Robot类完成底层键鼠的控制。

鼠标基本控制方法

mousemove()
mousePress()
mouseRelease()

键盘输入:

1、操作系统剪贴板

2、直接输入

keyPress 和 keyRelease方法

robotframework

Selenium判断函数:

       Isenabled();判断是否可用

       Isselected();判断是否被选择

       Ischecked();复选框是否被选中

自动化测试问答题

要确保selenium的成功率: 设置暂停时间、元素获取准确、设置超时间

自动化测试的步骤: 制定计划-----创建脚本----增加脚本-----回放脚本----分析结果报告

自动化测试需要测试用例吗?需要

软件测试的阶段:单元测试—集成测试----系统测试—验收测试

自动化测试属于那些测试阶段:系统测试阶段

怎样的功能才能需要进行自动化:需要自动重复使用、常用的

自动化测试的测试用例从哪里来?① 手工测试用例来选择② 适当给予补充

Selenium 测试:用到了单元测试的框架:Junit 、testng


本文转载自: https://blog.csdn.net/qq_36675754/article/details/127115076
版权归原作者 Aimin2022 所有, 如有侵权,请联系我们删除。

“selenium 自动化测试”的评论:

还没有评论