**
selenium是基于python开发的开源自动化框架
**
- pip install selenium==3.1.4
- import selenium没有报错即可
- 下载对应WebDriver操作Firefox浏览器的驱动程序: (注意和自己的操作系统以及浏览器版本对应,然后将D: \driver\目录 添加到环境变量path中)
Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。
**
八大元素定位方式:
.find_element_by_id(‘id的属性值’) #必须掌握
.find_element_by_name(‘name的属性值’) #必须掌握
.find_element_by_class_name(‘class的属性值’) #必须掌握
.find_element_by_link_text(‘文本链接’) #必须掌握
.find_element_by_partial_link_text(‘部分文本链接’) #了解
.find_element_by_ tag_name(‘标签名’) #了解
.find_element_by_xpath(‘很多’) #超级重点
.find_element_by_css_selector(‘很多’) #超级重点
其中:
xpath定位的优缺点:
优点: 定位语法丰富 当元素没有属性时可以通过xpah的路径定位
缺点:1.抗变性弱 2.不稳定 3.查找速度慢(相对于CSS定位)
CSS定位优缺点:
CSS是层叠样式表,用于美化web页面的一种技术,我们主要使用CSS中的选择器作为我们元素定位的一种策略。
优点:1.语法简洁 2.定位速度快 3.抗变性强
缺点:暂时没发现
xpath绝对路径与相对路径
**
- 绝对Xpath :它使用从根元素到期望元素的完整路径.
- 相对Xpath :您可以简单地从引用所需元素开始,然后从那里开始.
相对Xpath始终是首选,因为它们不是来自根元素的完整路径. (//html//body).因为在将来,如果添加/删除任何Web元素,则绝对Xpath会更改.因此,请始终在自动化中使用相对Xpath.
绝对路径,这里以xpath举例:
/html/body/div/form[@name=“f”]/span[@class=“bg s_btn_wr”]/input[@id=“su”]
这就是一个绝对路径,从网页的root节点html开始,按照xpath的路径一层一层向下寻找。如果当中有任意一个节点没有找到对应的元素,那么就会返回none。比如form之前还有一层div,那么按照绝对路径是找不到input这个元素的,因为在第一个div之后并没有form元素的存在。
相对路径:
在selenium的元素定位中,真正常用的是相对路径,因为绝对路径太过冗长而且死板。而相对路径就灵活地多,既可以扫描整个文档返回符合路径定义的元素,也可以在某个特定元素下去搜索。
// :只依据给出的路径匹配节点而不考虑当前节点在哪里
还是以上面那个input元素为例,我可以写成//input[@id=“su”], 也可以写成//span/input[@id=‘su’], 亦或//span[@class=“bg s_btn_wr”]/input. 都可以定位到input这个元素。这些xpath语句翻译出来就是,找到所有id为su的input元素,找到所有上层元素是span且id为su的input元素,找到所有上层元素span的class为bg s_btn_wr的input元素。 selenium会去搜索整个文档,只要符合你给出的这一段路径都会返回。
Page Object PO设计模式,分层封装模式
1、首先建立一个基本类page.py存放基础操作的仓库(各页面都会用到的权限弹框、定位、切换窗口、等基础功能)2、 接着:创建你想要的界面类(注意这个类是继承自上面的page),3、最后:你可以新建一个测试用例的脚本,去调用上面你写的界面类了。
分层的目的主要是方便你编写和维护脚本,让脚本用例更直观,元素发生变化时更好维护