还是以百度为例。
Selenium提高:JS操作和cookie处理_经验分享

调用JavaScript:

Selenium提高:JS操作和cookie处理_经验分享_02Selenium提高:JS操作和cookie处理_经验分享_03

执行JS一般由两种场景:

  • 一种是在页面上直接执行JS
  • 另一种是在某个已经定位的元素上执行JS

隐藏百度一下按钮:

Selenium提高:JS操作和cookie处理_经验分享_04
Selenium提高:JS操作和cookie处理_经验分享_05
Selenium提高:JS操作和cookie处理_经验分享_06

弹出新窗口的情况:

在编写自动化程序的时候,会遇到弹出新窗口的情况,而程序总是默认在第一个窗口页定位元素,这样,就会定位不到元素,程序报错。

在百度登录这里,如果点击立即注册,会重新打开一个新的页面。因为在 a标签 的 target 属性规定了浏览器将打开一个新的窗口。

所以我们不想弹出新窗口,就需要先删除target属性。

Selenium提高:JS操作和cookie处理_经验分享_07
先给新闻加上跳转新页面的属性。再删除掉。

Selenium提高:JS操作和cookie处理_经验分享_08

控制浏览器滚动条:

Selenium提高:JS操作和cookie处理_经验分享_09
Selenium提高:JS操作和cookie处理_经验分享_10
百度滚动条:
Selenium提高:JS操作和cookie处理_经验分享_11

Cookie处理

Selenium提高:JS操作和cookie处理_经验分享_12
Selenium提高:JS操作和cookie处理_经验分享_13
添加一个cookie:遍历所有cookie
Selenium提高:JS操作和cookie处理_经验分享_14
输出结果:
Selenium提高:JS操作和cookie处理_经验分享_15

获取对象的属性:

Selenium提高:JS操作和cookie处理_经验分享_16Selenium提高:JS操作和cookie处理_经验分享_17
Selenium提高:JS操作和cookie处理_经验分享_18
Selenium提高:JS操作和cookie处理_经验分享_19

验证码问题:

对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型有很多。有字母数字,汉字,算术题,或者滑块,语音等等。对于测试人员来说,不管是进行性能测试还是自动化测试都是很棘手的问题。下面简单说一些处理验证码的方式。

验证码识别技术:

  • 可以通过 python-tesseract 来识别验证码。Python-tesseract是python的光学字符识别(OCR)工具。也就是说,它将识别并“读取”嵌入图像中的文本。然而目前任何一种验证码识别技术,准确率都不是100%。

记录cookie:

  • 通过向浏览器添加cookie可以绕过登录的验证码,这是很有趣的一种解决方案。我们可以在用户登录前,通过 add_cookie() 的方式,将用户名密码写入浏览器cookie,再次访问登录系统链接将自动登录。
    Selenium提高:JS操作和cookie处理_经验分享_20
    使用cookie进行登录的难点,是如何获得用户名和密码的name,如果找不到name,就没办法继续操作。可以通过get_cookies()来获取登录的cookie信息。

滑块模拟拖动:

  • 可使用之前说的操作鼠标事件的方法,actionchines来进行滑块拖动操作,这个不详细说了。

Webdriver原理:

Selenium提高:JS操作和cookie处理_经验分享_21
Selenium提高:JS操作和cookie处理_经验分享_22
Selenium提高:JS操作和cookie处理_经验分享_23