文章目录
selenium库是什么?
Selenium是一个用于Web应用程序测试的自动化测试工具。可以模拟用户在Web浏览器中与Web应用程序进行交互的行为,如点击、输入、选择、滚动等,还可以对测试结果进行验证和报告。
一、selenium库的安装
使用如下代码,在cmd中进行安装库:
pip install selenium
如果下载速度缓慢,参照网络爬虫学习笔记—requests库中的python库安装加速方案
二、相关语法
1.元素定位
# 通过id进行定位
find_element(By.ID,"kw")
# 通过name进行定位
find_element(By.NAME,"wd")
# 通过类名进行定位
find_element(By.CLASS_NAME,"s_ipt")
# 通过标签名进行定位
find_element(By.TAG_NAME,"input")
# 通过完整超链接文字进行定位
find_element(By.LINK_TEXT,u" 新闻 ")
# 通过超链接文字进行定位(可以不完整)
find_element(By.PARTIAL_LINK_TEXT,u" 新 ")
# 通过xpath进行定位
find_element(By.XPATH,"//*[@class='bg s_btn']")
# 通过css定位
find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")
2.基本操作
# 设置最大等待时间,参数为秒数
implicitly_wait(60)
# 刷新当前窗口
refresh()
# 网页前进
forward()
# 网页后退
back()
# 最大化当前驱动窗口
maximize_window()
# 最小化当前驱动窗口
minimize_window()
# 网页全屏,调用窗口管理器特定的“全屏”操作
fullscreen_window()
# 通过name获得一个cookie
get_cookie('name的名称')
# 返回对应于当前会话可见的所有cookies,返回类型为字典
get_cookies()
# 自定义开启会话,创建新session前调用
start_client()
# 自定义结束会话,结束一个session后调用
stop_client()
3.自动截屏
# 当前页面截屏保存为png图片,可指定路径,bool
get_screenshot_as_file('filename')
# 将当前页保存为base64的格式
get_screenshot_as_base64()
# 将截图保存在本地
save_screenshot(filename)
# 当前页面截屏保存为png格式,数据形式为binary data
get_screenshot_as_png()
4.窗口操作
(1)获取信息
# 当前窗口x,y坐标和长度、宽度
get_window_rect()
# 当前窗口x、y坐标
get_window_position()
# 当前窗口长度、宽度
get_window_size()
# 设置窗口坐标位置和窗口大小
set_window_rect('x坐标', 'y坐标', '宽度', '高度')
# 设置窗口x,y坐标
set_window_position('x坐标', 'y坐标', windowHandle='current')
# 设置窗口的宽度,高度
set_window_size('宽度', '高度', windowHandle='current')
(2)操作窗口
# 工作窗口、frame等切换:swith_to
switch_to.default_content() # 切换到默认页
switch_to.frame('frame_name') # 切换到指定frame
switch_to.parent_frame() # 切换到父frame
switch_to.window('main') # 切换到主窗口
# 保存操作,需要赋予变量存储
source = d.page_source # 保存当前页面的源
title = d.title # 保存当前页面title
handlers = d.current_window_handle # 保存所有窗口句柄
handler = d.current_window_handle # 保存当前窗口句柄
outs = d.timeouts # 保存当前页面所有超时
# swith_to 和保存操作结合
element = d.switch_to.active_element
alert = d.switch_to.alert
5.键鼠模拟
click(on_element=None)#单击鼠标左键
click_and_hold(on_element=None)#点击鼠标左键,不松开
context_click(on_element=None)#点击鼠标右键
double_click(on_element=None)#双击鼠标左键
drag_and_drop(source, target)#拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset)#拖拽到某个坐标然后松开
key_down(value, element=None)#按下某个键盘上的键
key_up(value, element=None)#松开某个键
move_by_offset(xoffset, yoffset)#鼠标从当前位置移动到某个坐标
move_to_element(to_element)#鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset)#移动到距某个元素(左上角坐标)多少距离的位置
perform()#执行链中的所有动作
release(on_element=None)#在某个元素位置松开鼠标左键
send_keys(*keys_to_send)#发送某个键到当前焦点的元素
send_keys_to_element(element, *keys_to_send)#发送某个键到指定元素
三、使用步骤
1.引入库
代码如下(示例):
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
2、加载驱动
下载对应浏览器的驱动程序(以edge为例):
打开浏览器驱动下载页面,找到同时对应浏览器版本和电脑系统版本的驱动程序。
代码如下(示例):
driver = webdriver.Edge(service=Service(driver_path), options=edge_options)
3、访问网页
driver.get('http://spiderbuf.cn/e03/')
4、对网页进行操作
table = driver.find_element(By.CLASS_NAME,"table")
print(table.text)
# 返回网页中类名为table的标签的文本内容