ad

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_8.4 使用 Selenium测试

网友投稿 125 2023-11-13

【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第8章,第4节,吕云翔、张扬和韩延刚等编著。

8.4 使用 Selenium测试

虽然使用 Python 单元测试能够对网站的内容进行一定程度的测试,但是对于测试页面 功能,尤其是涉及 JavaScript 时,简单的爬虫就显得多少有点黔驴技穷了。十分幸运的是, 还有 Selenium 这个工具。与 Python 单元测试不同的是, Selenium 并不要求单元测试必须是 一个测试方法,另外,测试通过的话也不会有什么提示。本书之前已经介绍过 Selenium, 必 须强调的是, Selenium 测试可以在 Windows 、Linux 和 Mac 上的 Internet Explorer 、Mozilla 和 Firefox 中运行,能够覆盖如此多的平台正是 Selenium 的一个突出优点。毕竟不同于普通 的 Python 测 试 ,Selenium 测试可以从终端用户的角度来测试网站。而且,通过在不同平台 的不同浏览器中进行测试,也更容易暴露浏览器的兼容性问题。

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_8.4  使用 Selenium测试

8.4.1 Selenium 测试常用的网站交互

Selenium 进行网站测试的基础就是浏览器与网站的自动化交互,包括页面操作、数据交 互等。之前的章节曾对 Selenium 的基本使用做过简单的说明,有了网站交互(而不是典型 爬虫程序避开浏览器界面的策略),开发者就能够完成很多测试工作,比如找出异常表单、 HTML 排版错误、页面交互问题。

一般来说页面交互的第一步都是定位元素,即使用 find_element(s)_by_*系列方法。对于 一个给定的元素(最好已经定位到了这个元素),Selenium 能够执行的操作也很多,包括单 击 (click0 方法)、双击 (double_click0 方法)、键盘输入 (send_keys() 方法)、清除输入 (clear()方法)等,甚至是模拟浏览器的前进或后退(使用 driver.forward()和 driver.back()), 或者是访问网站弹出的对话框 (driver.switch_to_alert))。

Selenium 中的动作链 (action chain) 也是一个十分方便的设计用它可以完成多个动作, 其效果与对一个元素显式执行多个操作是一致的。例8-5 是一个使用 Selenium 登录豆瓣的 例子。

【例8-5】 使用 Selenium 登录豆瓣。from selenium import webdriver

from selenium.webdriver import ActionChains

path of chromedriver ='your path of chrome driver'

driver =webdriver.Chrome(path of chromedriver)

driver.get('https://www.douban.com/login')

email_field =driver.find_element_by_id('email')

pw_field =driver.find_element_by_id('password')

submit_button =driver.find_element_by_name('login')

email_field.send_keys('youremail@mail.com')

pw_field.send_keys('yourpassword')

submit_button.click()

将最后三行代码改写为:

actions =ActionChains(driver).\

click(email_field).send_keys('youremailamail.com')\

.click(pw_field).send_keys('yourpassword').click(submit_button)

actions.perform()

这两种方式的效果是完全一致的。第一种方式在两个字段上调用 send_keys(), 然后单击 登录按钮。第二种方式则使用一个动作链来单击每个字段并填写信息,最后登录(不要忘了 在最后使用 perform()方法执行这些操作)。实际上,不仅能使用 WebDriver 自带的方法进行 交互,还有十分强大 execute_script() 方法可以使用。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《Python 可视化数据分析》_学会挖掘大数据的价值_Python 中重复利用的函数与模块
下一篇:打开《Python 编程与应用实践》_成为Python大佬_4.2 循环语句
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×