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

image-20240119193046913

需要下载对应的驱动程序

需要和自己的浏览器版本接近

chromedriver:https://registry.npmmirror.com/binary.html?path=chrome-for-testing/

image-20240119193510439

将解压的文件到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 获取元素的文本
posted @ 2024-01-19 20:17  low-reed  阅读(6)  评论(0)    收藏  举报