Python自动化操作浏览器,解放双手,这感觉真爽

阅读文本大概需要 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.com/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.com  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自动化测试入门,看这一篇就足以

 

  • 12
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值