第 4 章 WebDriver API - 4.15 操作 Cookie - 4.20 关闭窗口

4.15 操作 Cookie

有时我们需要验证浏览器中的 Cookie 是否正确,因为基于真实的 Cookie 是无法通过白盒测试和集成测试的。WebDriver 提供了操作 Cookie 的相关方法,可以读取、添加和删除 Cookie。

WebDriver 操作 Cookie 的方法如下。
● get_cookies():获得所有 Cookie。
● get_cookie(name):返回字典中 key 为「name」的 Cookie。
● add_cookie(cookie_dict):添加 Cookie。
● delete_cookie(name,optionsString):删除名为 OpenString 的 Cookie。
● delete_all_cookies():删除所有 Cookie。

下面通过 get_cookies()获取当前浏览器的所有 Cookie。

"""
* get_cookies() 获得所有 cookie 信息。
* get_cookie(name) 返回字典的 key 为“ name”的 cookie 信息。
* add_cookie(cookie_dict) 添加 cookie。“ cookie_dict”指字典对象,必须有name和value 值。
* delete_cookie(name,optionsString)  删除 cookie 信息。“name”是要删除的 cookie 的名称,
                                   “optionsString”是该 cookie 的选项,目前支持的选项包括“路径”,“域”。
* delete_all_cookies() 删除所有 cookie 信息。
"""
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

# 获得所有cookie信息并打印
cookie = driver.get_cookies()
print(cookie)

# 添加cookie信息
driver.add_cookie({'name': 'key-aaaaaaa', 'value': 'value-bbbbbb'})

# 遍历指定的cookies
for cookie in driver.get_cookies():
    print("%s -> %s" % (cookie['name'], cookie['value']))

driver.quit()

执行结果如下

从执行结果可以看出,Cookie 中的数据是以字典形式存放的。知道了 Cookie 中数据的存放形式后,即可按照这种形式向浏览器中添加 Cookie。


执行结果如下:

从执行结果可以看出,最后一条 Cookie 是在脚本执行过程中通过 add_cookie()方法添加的。通过遍历得到所有的 Cookie,从而找到字典中 key 为「name」和「value」的 Cookie 值。
delete_cookie() 和 delete_all_cookies() 方法的使用也很简单,前者通过 name 删除一个指定的 Cookie,后者直接删除浏览器中的所有 Cookies。

4.16 调用 JavaScript

有些页面操作不能依靠 WebDriver 提供的 API 来实现,如浏览器滚动条的拖动。这时就需要借助 JavaScript 脚本。WebDriver 提供了 execute_script()方法来执行 JavaScript 代码。
用于调整浏览器滚动条位置的 JavaScript 代码如下。

 

扫描二维码关注公众号,回复: 9622659 查看本文章

window.scrollTo()方法用于设置浏览器窗口滚动条的水平位置和垂直位置。第一个参数表示水平的左边距,第二个参数表示垂直的上边距,代码如下。

"""
* execute_script() 调用JavaScript实现滚动条操作。
"""
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

driver.set_window_size(800, 600)

driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
sleep(2)

# 通过javascript设置浏览器窗口的滚动条位置
js = "window.scrollTo(100,450);"
driver.execute_script(js)
sleep(3)

driver.quit()

首先,在浏览器中打开百度,搜索「selenium」,通过 set_window_size()方法将浏览器窗口设置为固定宽、高显示,目的是让窗口出现水平和垂直滚动条。然后,通过 execute_script()方法执行 JavaScript 代码来控制浏览器滚动条的位置。

当然,JavaScript 的作用不仅仅体现在浏览器滚动条的操作上,它还可以在页面中的 textarea 文本框中输入内容,如图 4-9 所示。

文本框的 HTML 代码如下。

虽然可以通过 id 定位到元素,但是不能通过 send_keys()在文本框中输入文本信息。在这种情况下,可以借助 JavaScript 代码输入文本信息。

首先,定义要输入的内容 text。然后,将 text 与 JavaScript 代码通过「+」进行拼接,这样做的目的是为了方便自定义输入内容。最后,通过 execute_script()执行 JavaScript 代码。

猜你喜欢

转载自www.cnblogs.com/MarlonKang/p/12427396.html
今日推荐