selenium自动化测试笔记(2)

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判断进行选择

你可能感兴趣的:(笔记)