文章目录
前言
大家好,我是空空star,本篇给大家分享一下
《技能树-网络爬虫-selenium》
。
一、selenium
Selenium是web自动化测试工具集,爬虫可以利用其实现对页面动态资源的采集,对于其这种说法错误的是:
A.selenium本质是驱动浏览器来发送请求,模拟浏览器的行为
B.页面执行 js 才能呈现的内容,可以使用 selenium 来协助采集
C.请求之后往往需要等待一段时间,等待资源加载渲染完成
D.selenium和requests一样,都能用来采集数据,具有同等的速度
分析:
A是对的,Selenium是一个自动化测试工具,可以通过编程语言(如Python、Java)来驱动浏览器,模拟人工操作来访问网页并获取数据。
B是对的,有execute_script()方法;
C是对的,可以通过显示等待、隐式等待、强制等待设置等待时间;
D是错的,Selenium不能像requests那样直接发送HTTP请求,而是通过模拟用户在浏览器上的操作来访问网页,因此相对来说会比requests更慢一些。
二、selenium 测试用例
Selenium 是web自动化测试工具集,爬虫可以利用其实现对页面动态资源的采集。请按顺序操作:
- 安装 Python Selenium 包:pip install selenium
- 安装 Chrome 驱动:https://npm.taobao.org/mirrors/chromedriver/,如果使用别的浏览器需要下载对应浏览器的驱动
- 编写使用 python unittest 测试使用 selenium 完成自动化
selenium 自动化网页测试的操作:
- 使用 selenium 的Chrome 驱动,打开 CSDN 首页,此时会打开 Chrome 浏览器测试页面
- 验证字符串 “CSDN” 在页面标题
- 找到网页里的搜索框
- 输入"OpenCV技能树"
- 输入回车,搜索结果
- 等待10秒退出
代码框架如下:
# -*- coding: UTF-8 -*-import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
classPythonOrgSearch(unittest.TestCase):defsetUp(self):
self.driver = webdriver.Chrome()deftest_search_in_python_org(self):# TODO(You): 请正确实现浏览器自动化测试需求
time.sleep(10)deftearDown(self):
self.driver.close()if __name__ =="__main__":
unittest.main()
以下代码实现正确的是?
A.
deftest_search_in_python_org(self):
driver = self.driver
driver.get("https://www.csdn.net/")
self.assertIn("CSDN", driver.title)
elem = driver.find_element_by_id("toolbar-search-input")
elem.send_keys(Keys.RETURN)assert"No results found."notin driver.page_source
time.sleep(10)
B.
deftest_search_in_python_org(self):
driver = self.driver
driver.get("https://www.csdn.net/")
self.assertIn("CSDN", driver.title)
elem = driver.find_element_by_id("toolbar-search-input")
elem.send_keys("OpenCV技能树")
elem.send_keys(Keys.RETURN)assert"No results found."notin driver.page_source
time.sleep(10)
C.
deftest_search_in_python_org(self):
driver = self.driver
driver.get("https://www.csdn.net/")
self.assertIn("CSDN", driver.title)
elem = driver.find_element_by_id("toolbar-search-input")
elem.send_keys("OpenCV技能树")assert"No results found."notin driver.page_source
time.sleep(10)
D.
deftest_search_in_python_org(self):
driver = self.driver
driver.get("https://www.csdn.net/")
self.assertIn("CSDN", driver.title)
elem = driver.find_element_by_name("toolbar-search-input")
elem.send_keys("OpenCV 技能树")
elem.send_keys(Keys.RETURN)assert"No results found."notin driver.page_source
time.sleep(10)
分析:
A是错的,没有向输入框输入 OpenCV技能树;
B是对的;
C是错的,没有回车查询;
D是错的,定位方式不对,通过下图可以看到输入框的 id="toolbar-search-input"并不是name
总结
版权归原作者 空空star 所有, 如有侵权,请联系我们删除。