目录
安装selenium
- pip install selenium
环境搭建
- 下载对应版本浏览器驱动(selenium调用浏览器必须有一个webdriver的驱动文件)
- 配置环境变量,path=驱动下载目录
selenium快速入门
1、元素定位
提供了8种元素定位方式:id,name, class name, tag name, link text, partial link text, xpath, css selector
定位一个元素 | 定位多个元素 | 示例演示 | 备注说明 |
---|---|---|---|
find_element_by_class_name | find_elements_by_class_name | driverr.find_element_by_class_name("s_ipt") | 通过类名进行定位 |
find_element_by_css_selector | find_elements_by_css_selector | 通过css定位,css定位有N种写法,这里列几个常用写法 driver.find_element_by_css_selector("#kw") | 通过css选择器进行定位 |
find_element_by_id | find_elements_by_id | driver.find_element_by_id("kw") | 通过元素id定位 |
find_element_by_link_text | find_elements_by_link_tex | 元素:<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a> driver.find_element_by_link_text("新闻") | 通过完整超链接定位 |
find_element_by_name | find_elements_by_name | driver.find_element_by_name("wd") | 通过元素name定位 |
find_element_by_partial_link_text | find_elements_by_partial_link_text | driver.find_element_by_link_text("新") | 通过部分链接定位 |
find_element_by_tag_name | find_elements_by_tag_name | driver.find_element_by_tag_name("input") | 通过标签定位 |
find_element_by_xpath | find_elements_by_xpath | xpath定位有N种写法,这里列几个常用写法: driver.find_element_by_xpath("//*[@id='kw']") | 通过xpath表达式定位 |
selenium 库下webdriver模块的常用方法
1、控制浏览器操作
方法 | 说明 |
---|---|
set_window_size() | 设置窗口尺寸 |
back() | 后退 |
forward() | 前进 |
refresh() | 刷新当前页面 |
clear() | 清除文本 |
send_keys (value) | 模拟按键输入 |
click() | 单击元素 |
2、鼠标事件
鼠标操作的方法封装在ActionChains类里面
方法 | 说明 |
---|---|
ActionChains(driver) | 构造ActionChains对象 |
context_click() | 执行鼠标悬停操作 |
move_to_element(above) | 鼠标悬停 |
double_click() | 双击 |
drag_and_drop() | 拖动 |
perform() | 执行所有 ActionChains 中存储的行为,可以理解成是对整个操作的提交动作 |
3、键盘事件
Selenium中的Key模块为我们提供了模拟键盘按键的方法,那就是send_keys()方法。它不仅可以模拟键盘输入,也可以模拟键盘的操作
模拟键盘按键 | 说明 |
---|---|
send_keys(Keys.BACK_SPACE) | 删除键(BackSpace) |
send_keys(Keys.TAB) | 制表键(Tab) |
send_keys(Keys.ENTER) | 回车键(Enter) |
send_keys(Keys.CONTROL,‘a’) | 组合键:全选(Ctrl+A) |
send_keys(Keys.CONTROL,‘c’) | 组合键:复制(Ctrl+C) |
4、表单切换
webdriver只能在一个页面上对元素识别定位,对于iframe表单内嵌页面上的元素无法直接定位,需要将当前定位的主体切换到iframe表单内嵌页面内
方法 | 说明 | |
---|---|---|
switch_to.frame() | 将当前定位的主体切换为frame/iframe表单的内嵌页面中 默认可以直接取表单的id 或name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位:
| |
switch_to.default_content() | 跳回最外层的页面 |
5、多窗口切换
在操作过程中有时候点击某个按钮或链接,会新开一个浏览器窗口,若需要对新窗口元素识别操作,需要先切换到最新窗口内,webdriver提供了switch_to.window()方法,可以实现不同窗口的切换
方法 | 说明 |
---|---|
方法 | 说明 |
current_window_handle | 获得当前窗口句柄 |
window_handles | 返回所有窗口的句柄到当前会话 |
switch_to.window() | 用于切换到相应的窗口,switch_to.frame()类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。 |
6、弹框处理
在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作
方法 | 示例 | 说明 |
---|---|---|
text | 返回 alert/confirm/prompt 中的文字信息 | |
accept() | driver.switch_to.alert.accept() | 接受现有警告框 |
dismiss() | 关闭现有警告框 | |
7、下拉框选择操作
提供select 类处理下拉框操作,导入指定类即可:from selenium.webdriver.support.select import Select
方法 | 说明 |
---|---|
select_by_value(“选择值”) | select标签的value属性的值 |
select_by_index(“索引值”) | 下拉框的索引 |
select_by_visible_testx(“文本值”) | 下拉框的文本值 |