admin管理员组文章数量:1579984
阅读文本大概需要 5 分钟。
上篇文章讲了 RF 自动化框架,今天来讲讲 RF 操作网页的常规操作。
既然是网页,我们就得掌握点 html 元素定位的知识。
元素定位
1、通过 id 定位,id属性是唯一的。
2、name 定位:元素的名称,name 属性值在当前页面可以不唯一。
3、class 定位:元素的类名。
4、tag 定位:页面 html 文档下的各种标签。
5、link 定位:专门用来定位文本链接。
6、partial link 定位:是对 link 定位的一种补充,当链接上的文本内容比较长的时候,可以取文本的一部分进行定位,当然这部分可以唯一地标识这个链接
7、XPath 定位:有多种定位策略。
1)绝对路径定位:对于没有 id,name、classname 不好定位的,这也是我最常用的,因为可以通过 chrome 右键选择 Copy Xpath。
2)利用元素属性定位:
.//*[@id='Title']
这里是用的 id,也可以用元素其他能够唯一标识的属性,不局限于id、name、class 这些;* 代表的是标签名,不指定时就可以用 * 代替。
8、CSS 定位(薄弱,用的很少,但很强大,比 xpath 简洁灵活):使用选择器来为页面元素绑定属性,可以灵活地选择控件的任意属性,可以通过 chrome 右键选择 Copy selector。
1)通过class属性定位:点号(".")表示通过class属性定位。
2)通过id属性定位:("#")表示通过id定位元素。
3)通过其他属性定位:("[]"),中括号里的属性可以唯一标识这个元素就可以;属性的值可以加引号,也可以不加。
4)组合定位,如果以上单个不唯一的话,就需要进行组合,形成唯一的定位。
如何启动浏览器
上篇文章的 demo 中也讲过,操作浏览器用的是 selenium2Library 第三方库,那这个库是怎么启动浏览器的呢?它是通过找到浏览器的驱动来启动浏览器,比如我用的是 chrome 谷歌浏览器,我需要把 chromedriver 下载解压后放在 Python 的安装根目录下。
驱动这块有个坑需要注意下,驱动必须要和浏览器版本是有映射关系的,如果版本不是和映射关系匹配的,会出现启动不了浏览器的情况。Chrome 和 ChromeDriver 映射关系对应如下,先查看你的 Chrome 浏览器版本,然后根据映射关系去下载相应版本的 ChromeDriver。所有版本的下载链接点击下方阅读原文可直接下载,可选择 Linux、mac、win,下载后解压,放在 Python 安装根目录下。(左右滑动查看全部)
ChromeDriver v2.43 (2018-10-16)----------Supports Chrome v69-71
ChromeDriver v2.42 (2018-09-13)----------Supports Chrome v68-70
ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69
ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68
ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67
ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66
ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65
ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64
实战举例
上面的准备工作就位后,我们直接开始实战,我们还是以 pk 哥的博客为例,我们用 RF 框架来实现打开博客,输入登录账号和密码,进行登录操作,当然,这个博客做了登录二维码验证功能,这个以后详细分析。
效果动态的如下:
代码如下:
代码分析
1、导入第三方库 Selenium2Library
Library Selenium2Library
Selenium2Library 库封装了大量的浏览器操作的方法,导入后可直接调用。
2、启动浏览器并输入网址
Open Browser https://www.jianshu/u/52353ffa8b86 chrome
用 Selenium2Library 库的 Open Browser 方法启动浏览器,后面的参数是要打开的网址和启动的浏览器类型。
3、点击登录按钮
Click Element id =sign_in
首先我们要用到上面讲到的页面元素定位的方法,我们打开页面,用 F12 快捷键或者右键-检查打开调试页面,Ctrl + Shift + C 快捷键快速定位具体元素,查看元素具体属性,发现页面元素有 id,有 id 属性我们就用 id 来定位,因为 id 是唯一的,直接定位。
点击元素用的是 Selenium2Library 库的 Click Element 方法。
4、输入登录账号和密码(左右滑动查看全部)
Input text id =session_email_or_mobile_number 13255556666 # 输入登录账号
Input text id =session_password test1234 # 输入登录密码
在输入框输入文本,我们用的是 Selenium2Library 库的 Input text 方法,我们用同样的方式定位到输入框的属性,获取到它的 id 属性,例子中的登录账号和密码是虚构的,请忽略。
5、点击登录按钮
Click Element id =sign-in-form-submit-btn # 点击登录按钮
这一步和上面一样,获取 id,点击元素。
这个例子结合上面讲到的元素定位方法,我们总结下定位元素方法的首选是 id 定位,没有 id 再用 xpath 定位,最后再考虑用其他的定位方式。
Selenium2Library 常见操作
最后我们来看下第三方库 Selenium2Library 的常见操作有哪些。(左右滑动查看全部)
Open Browser htpp://www.xxx chrome # 打开浏览器
Close Browser # 关闭浏览器
Close All Browsers # 关闭所有浏览器
Maximize Browser Window # 浏览器最大化
Input Text Xpath=//* [@] 输入信息 # 文本输入
Click Element Xpath=//* [@] # 点击元素
Click Button Xpath=//* [@] # 点击按钮
Comment 注释说明 # 注释或者直接用#注释
Sleep 3 # 固定时间休眠,单位:秒
Wait Until Page Contains Element Xpath=//* [@] 30 error # 等待元素出现在当前页面
'''
Xpath=//* [@] :表示元素定位,这里定位出现的元素
30 : 表示最长等待时间。
error : 表示错误提示,自定义错误提示,如:“元素不能正常显示”
'''
Get Title # 获得当前浏览器窗口的title 信息
Get Text Xpath=//* [@] 获取文本信息
Get Element Attribute id=kw@name # 获取元素属性值
get cookies 获得当前浏览器的所有cookie
get cookie value Key_name # 获得cookie值, key_name 表示一对cookie中key的name
delete cookie Key_name # 删除key为name 的cookie信息。
delete all cookies # 删除当前浏览器的所有cookie。
add cookie Key_name Value_name # 添加一对cooke (key:value)
${a} Set Variable hello # 定义变量a为hello。
${a} Set Variable Hello World
log ${a} # 在测试报告中输出a变量的值hello word。
should contain ${title} Python知识圈 # 验证元素是否和定义的一样
Select Frame Xpath=//* [@] # 表单嵌套,进入对应的表单
Unselect Frame # 退出表单
Unselect From List By Value Xpath=//* [@] vlaue # 下拉框选择,Xpath=//* [@] 定位下拉框;Vlaue 选择下拉框里的属性值。
run keyword if ${a}>=1 # If分支判断语句
:FOR ${i} in range 10
log ${i} # for 循环语句
补充:对于启动浏览器,RF 是支持大部分常用浏览器的,要想通过不同的浏览打开 URL 地址,一定要安装浏览器相对应的驱动。如 chrome 的驱动:chromedriver.exe 等。浏览器默认为空时启动 FireFox。下图是支持的浏览器和对应的关键字,Open Browser 方法后输入对应的关键字就可以通过驱动启动相应的浏览器。
以上就是 Selenium2Library 库操作浏览器常见的封装方法,掌握了这些,就可以熟练的操作浏览器了,使其自动化帮你完成一些重复的工作了,比如测试时用到的自动化测试。还可以每天自动化的帮你在特定网站签到或者抽奖,当然这只是半自动,还是需要我们手动执行程序,后面会教大家全自动操作,尽情期待。
今天的 Python WEB 自动化就分享到这里,下篇文章给大家分享下怎么自动化操作移动端的 APP,希望对你有帮助,祝进步!
「pk哥」以梦为马,不负韶华
推荐阅读:
Python爬取微信,我发现了之前没发现的秘密!
Python爬虫下载喜马拉雅音频文件
Python图形用户界面GUI入门
Python自动化测试你觉得有必要学吗?
Python自动化测试入门,看这一篇就足以
版权声明:本文标题:Python自动化操作浏览器,解放双手,这感觉真爽 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727864642a1134313.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论