selenium自动化测试笔记(2)
调用JavaScript
当webdriver遇到没法完成的操作时,可以考虑使用JavaScript来完成,除了完成webdriver无法完成的操作,如果熟悉JavaScript的话,那么使用weddriver执行JavaScript是意见俯卧撑高效的事情。
webdriver提供了execute_script()借口用来调用js代码
execute_script(script,*args) 在当前窗口、框架 同步执行javascript脚本
script:JavaScript的执行
*agrs:适用于javascript脚本
控制浏览器滚动条
一般用到操作滚动调的两个场景:
- 注册时的法律条文 的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方
- 要操作的页面元素不在视觉范围之内,无法进行操作,需要拖动滚动条
用于标识滚动条位置的代码
<body onload="document.body.scrollTop=0">
<body onload="document.body.scrollTop=100000">
~markdown
document.body.scrollTop:页面被卷去的告诉
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
~
~~~python
from time import sleep
from selenium import webdriver
driver=webdriver.Firefox()
driver.get(‘http://www.baidu.com‘)
driver.find_element_by_id(‘kw’).send_keys(‘selenium’)
driver.find_element_by_id(‘su’).click()
sleep(3)
将滚动条移到底部
js=”var q=document.documentElement.scrollTop=100000”
driver.execute_script(js)
sleep(3)
将滚动条移到页面的顶部
js_=”var p=document.documentElement.scrollTop=0”
driver.execute_script(js_)
sleep(3)
仅仅适用于Firefox
~~~
Cookie处理
有时候我们需要验证浏览器三是否存在某个cookie,因为基于真实的cookie是无法通过白盒和集成测试完成的。webdriver可以读取,添加和删除cookie信息。
方法:
- get_cookies() 获取所有cookie的信息
- get_cookie(name) 返回特定name有cookie信息
- add_cookie(cookie_dict) 添加cookie,必须有name和value值
- delete_cookie(name) 删除特定(部分)的cookie信息
- delete_all_cookies() 删除所有cookie信息
~~~python
from time import sleep
from selenium import webdriver
driver = webdriver.Firefox()
driver.get(‘http://www.baidu.com‘)
向cookie中的name和value添加回话信息
driver.add_cookie({‘name’:’key-aaaaaa’,’value’:’value-bbbbbb’})
遍历cookie中的name和value信息打印
for cookie in driver.get_cookies():
print(“%s -> %s”%(cookie[‘name’],cookie[‘value’]))
print(‘————-我是一号分隔线—————’)
删除一个特定的cookie
driver.delete_cookie(‘key-aaaaaa’)
for cookie in driver.get_cookies():
print(“%s -> %s”%(cookie[‘name’],cookie[‘value’]))
print(‘————–好吧!我是二号分隔线—————–’)
删除所有cookie
driver.delete_all_cookies()
print(driver.get_cookies())
sleep(3)
driver.quit()
~~~
获取对象的属性
获取测试对象的属性能够帮助我们更好的进行对象的定位。比如页面上有很的标签为input元素,而我们需要定位其中一个具有data-node属性不一样的元素。
由于webdriver不支持直接使用data-node来定位对象,所以我们只能先把所有input都找到,然后遍历他们,获取想要的元素。
可以使用if判断进行选择