web自动化
一 . selenium
- 是一个Web 应用的自动化框架。
- 可以通过它写出自动化程序,实现人在浏览器中操作页面
- 获取页面有效信息
selenium环境安装
主要包括客户端库和浏览器驱动
- 客户端库主要根据不同的编程语言进行选择(例如:python主要就可以通过pip下载安装-pip install selenium)
- 浏览器驱动主要也是与浏览器相匹配(我主要是常用Chrome浏览器) 备注:需要注意与版本相匹配 [谷歌浏览器驱动地址](http://chromedriver.storage.googleapis.com/index.html)
关于版本可以打开浏览器,在地址栏输入chrome://version/,查看到谷歌当前的版本号
选择元素的方法
- 根据id选择元素
# 根据id选择元素
element = wd.find_element_by_id('kw')
element.send_keys('python\n')
- 根据class定位元素
# 根据class选择元素
elements = wd.find_elements_by_class_name('animal')
for element in elements:
print(element.text)
- 根据标签选择元素
# 根据标签定位元素
elements = wd.find_elements_by_tag_name('span')
for element in elements:
# 通过WebElement对象的text属性可以获取该元素在网页中的文本内容
print(element.text)
find_element 和 find_elements 的区别
find_elements 选择的是符合条件的 所有元素; 如果没有符合条件的元素, 返回空列表
find_element 选择的是符合条件的 第一个元素; 如果没有符合条件的元素, 抛出异常(NoSuchElementException )
代码执行的速度比百度服务器响应的速度快的遗留问题
解决方案:
当元素未找到时,选择周期性寻找该元素,直到找到/指定最大等待时长,到达临界点,再抛出异常提示(selenium提供的方法代码)
# 设置最大等待时长为 10秒
wd.implicitly_wait(10)
操控元素
- 点击元素
# 根据id定位到搜索栏并输入python关键字点击百度一下进行查询
element = wd.find_element_by_id('kw')
element.send_keys('python')
wd.find_element_by_id('su').click()
- 在元素中输入字符串
# 输入字符串
element.send_keys('python\n')
- 获取元素包含的信息(文本信息,属性等)
# 获取搜索结果中id=2的相关文字内容
context = wd.find_element_by_id('2')
print(context.text)