关于selenium
selenium是一个用于Web应用程序测试的工具,selenium测试直接运行再浏览器上,就像真正的用户在操作一样。(百度百科)
安装selenium
使用pip安装selenium。
pip install selenium
安装浏览器驱动
Chrome驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/
Firefox驱动下载地址:https://github.com/mozilla/geckodriver/releases/
IE驱动下载地址:http://selenium-release.storage.googleapis.com/index.html
找到对应的浏览器、版本下载。
下载完成后,需要做两件事:1.将驱动放复制到浏览器根目录下;2.将驱动复制到Python根目录下。

注意: 若浏览器的安装路径非默认路径,则需要将浏览器的安装路径添加到环境变量path中。
测试环境是否搭建成功
命令:
from selenium import webdriver
browser = webdriver.Chrome()
第二行可根据自身浏览器自行修改,例如:Ie()、Firefox()、Poera()等。若看到如下图所示启动了浏览器则表明环境搭建成功。
selenium快速入门
定位元素
方法 | 说明 |
---|---|
find_element_by_id | 使用id定位元素 |
find_element_by_name | 使用name定位元素 |
find_element_by_xpath | 使用xpath定位元素 |
find_element_by_link_text | 使用完整链接文本定位元素 |
find_element_by_partial_link_text | 使用部分链接文本定位元素 |
find_element_by_tag_name | 使用标签名定位元素 |
find_element_by_class_name | 使用类名定位元素 |
find_element_by_css_selector | 使用css选择器定位元素 |
例如:通过xpath定位:
from selenium import webdriver
# 打开一个浏览器
browser = webdriver.Chrome()
# 使用get方式打开一个站点
browser.get("https://www.baidu.com/")
# 使用xpath定位元素
inputTag = browser.find_element_by_xpath('//*[@id="kw"]')
鼠标事件
方法 | 说明 |
---|---|
ActionChains(driver) | 构造ActionChains对象 |
context_click() | 右键 |
move_to_element(above) | 鼠标悬停 |
double_click() | 双击 |
drag_and_drop() | 拖动 |
perform() | 执行所有ActionChains中的存储行为,可以理解成是对猪呢个操作的提交动作 |
例如我们首先通过xpath定位到一个表单的提交按钮,执行click(),即可提交表单
# 定位提交按钮
firstEntrance = browser.find_element_by_xpath('/html/body/form/div[3]/table/tbody/tr/td[1]/input')
# 单击提交按钮
firstEntrance.click()
键盘事件
send_keys()方法可以模拟对表单的填写,也可以模拟键盘的操作。
方法 | 说明 |
---|---|
send_keys(Keys.BACK_SPACE) | 删除键backspace |
send_keys(Keys.SPACE) | 空格 |
send_keys(Keys.TAB) | 制表键TAB |
send_keys(Keys.ESCAPE) | 回退ESC |
send_keys(Keys.ENTER) | 回车 |
send_keys(Keys.Fn) | 键盘功能键Fn |
send_keys(Keys.CONTROL,‘a’) | 全选 |
send_keys(Keys.CONTROL,‘c’) | 复制 |
send_keys(Keys.CONTROL,‘x’) | 剪切 |
send_keys(Keys.CONTROL,‘v’) | 粘贴 |
警告框处理
弹窗警告框有三种,alert()、confirm()、prompt()
alert()框只有一个确认按钮,用来警告;confirm()用于确认,有是/否的选项,prompt()可以用来输入文本。
方法 | 说明 |
---|---|
switch_to_alert() | 切换到弹窗 |
text | 获取对话框文本值 |
accept() | 接受弹窗报警 |
dismiss() | 解除弹窗报警 |
send_keys() | 输入值(只适用于prompt) |
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('...')
browser.find_element_by_xpath('...')
#切换到弹窗
alert = browser.switch_to_alert()
# 打印警告框文本
print(alert.text)
#若为alert弹窗
alert.accept()# 接受弹窗
#若为confirm弹窗
alert.accept()# 确认
alert.dismiss()# 取消
#若为prompt
alert.send_keys('11111')
alert.accept()# 输入11111并提交
alert.dismiss()# 解除警告
下拉框处理
selenium中对下拉框有专门的处理,需要用到下拉框的类Select
from selenium.webdriver.support.select import Select
方法 | 说明 |
---|---|
select_by_value() | 通过value属性选择 |
select_by_index() | 通过索引选择,从0开始 |
select_by_visible_text() | 通过可见的文本进行选择 |
关闭浏览器
方法 | 说明 |
---|---|
quit() | 关闭所有窗口 |
close() | 关闭单个窗口 |
Reference
https://blog.csdn.net/wangshufen20091651/article/details/82897199
https://blog.csdn.net/weixin_36279318/article/details/79475388
http://www.testclass.net/selenium_python/selenium3-browser-driver/
https://blog.csdn.net/u010694922/article/details/79485003
https://blog.csdn.net/chenjuan0530/article/details/79553157