python爬虫之selenium自动化学习
python爬虫之selenium自动化学习
一、selenium概述
1、什么是selenium
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
2.seleniumd功能
1.框架底层使用Javascript模拟真实的用户对浏览器的操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输出,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。
2、使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。
3、使用简单,可使用Java,Python等多种语言编写用例脚本。
3.selenium的特点
1.可根据指令操作浏览器
2.只是工具,必须与第三方浏览器结合使用
二、Selenium安装与环境配置
#执行pip操作
pip install selenium==3.0.2
需要下载对应的驱动程序
需要和自己的浏览器版本接近
chromedriver:https://registry.npmmirror.com/binary.html?path=chrome-for-testing/
将解压的文件到python的安装目录的scrpit目录下面
# selenium的测试
from selenium import webdriver
# 创建浏览器对象 ---此时浏览器打开
driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')
# 关闭浏览器
driver.quit()
三、selenium +chrome组合使用
# selenium的测试
import time
from selenium import webdriver
# 创建浏览器对象 ---此时浏览器打开
driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')
# 将值reed输入百度的搜索款
driver.find_element_by_xpath("//input[@id='kw']").send_keys('lowreed')
# 执行按钮的点击事件
driver.find_element_by_xpath("//input[@id='su']").click()
# 展示页面五秒
time.sleep(5)
# 关闭浏览器
driver.quit()
四、selenium常见函数
1.浏览器对象
浏览器对象的browser常用方法
driver.get() 地址栏输入url地址并确定
driver.quit() 关闭浏览器
browser.quit():关闭浏览器
browser.close():关闭当前页
browser.gmaximize_window():浏览器窗口最大化
browser.page_source:HTML结构源码。(即前端的源码)
browser.page_source.find(‘字符串’):从源码中查找指定字符串,返回源码大概的位置。如果没有就返回-1,常用于判断最后一页
2.定位节点
元素查找,返回节点对象或节点对象的列表
定位一个元素 | 定位多个元素 | 含义 |
---|---|---|
find_element_by_id() | find_elements_by_id() | 通过元素id定位 |
find_element_by_name() | find_elements_by_name() | 通过元素name定位 |
find_element_by_class_name() | find_elements_by_class_name() | 通过类名进行定位 |
find_element_by_xpath() | find_elements_by_xpath() | 通过xpath表达式定位 |
find_element_by_link_text() | find_elements_by_link_text() | 通过完整超链接定位 |
find_element_by_partical_link_text() | find_elements_by_partical_link_text() | 通过部分链接定位 |
find_element_by_tag_name() | find_elements_by_tag_name() | 通过标签定位 |
find_element_by_css_selector() | find_elements_by_css_selector() | 通过css选择器进行定位 |
3.节点对象的方法
node.send-keys(): 向文本框发送内容
node.click(): 点击
node.clear(): 清空文本
node.get_attrbute('属性名'):获得节点的属性值
node.text: 获得节点的文本内容
4.selenium键盘操作
selenium中的key模块为我们提供了模拟输入键盘按键的方法
模拟键盘按键 | 说明 |
---|---|
send_keys(Keys.BACK_SPACE) | 输入删除键(BackSpace) |
send_keys(Keys.SPACE) | 输入空格键(Space) |
send_keys(Keys.TAB) | 输入制表键(Tab) |
send_keys(Keys.ESCAPE) | 输入回退键(Esc) |
send_keys(Keys.ENTER) | 输入回车键(Enter) |
组合键的使用
模拟键盘按键 | 说明 |
---|---|
send_keys(Keys.CONTROL, ‘a’) | 全选(Ctrl+A) |
send_keys(Keys.CONTROL, ‘c’) | 复制(Ctrl+C) |
send_keys(Keys.CONTROL, ‘x’) | 剪切(Ctrl+X) |
send_keys(Keys.CONTROL, ‘v’) | 粘贴(Ctrl+V) |
send_keys(Keys.F1…Fn) | 键盘 F1…Fn |
6.selenium鼠标操作
在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。
方法 | 说明 |
---|---|
ActionChains(driver) | 构造ActionChains对象 |
context_click() | 执行鼠标悬停操作 |
move_to_element(above) | 右击 |
double_click() | 双击 |
drag_and_drop() | 拖动 |
move_to_element(above) | 执行鼠标悬停操作 |
context_click() | 用于模拟鼠标右键操作, 在调用时需要指定元素定位 |
perform() | 执行所有 ActionChains 中存储的行为,可以理解成是对整个操作的提交动作 |
使用流程
- 导入鼠标事件类:
from selenium.webdriver import ActionChains
- 实例化鼠标对象:
ActionChains(browser)
- 指定鼠标行为:
move_to_element(node)
- 执行鼠标行为:
perform()
# 对定位到的元素执行鼠标悬停操作
ActionChains(driver).move_to_element(to_element=element).perform()
# 将页面下拉框拉到最下面
driver.execute_script(
'window.scrollTo(0,document.body.scrollHeight)'
)
8、控制浏览器操作的一些方法
方法 | 说明 |
---|---|
webdriver.set_window_size() | 设置浏览器的大小 |
webdriver.back() | 控制浏览器后退 |
webdriver.forward() | 控制浏览器前进 |
webdriver.refresh() | 刷新当前页面 |
webdriver.clear() | 清除文本 |
webdriver.send_keys(value) | 模拟按键输入 |
webdriver.click() | 单击元素 |
webdriver.submit() | 用于提交表单 |
webdriver.get_attribute(name) | 获取元素属性值 |
webdriver.is_displayed() | 设置该元素是否用户可见 |
webdriver.size | 返回元素的尺寸 |
webdriver.text | 获取元素的文本 |