4.1 定位元素
4.2 控制浏览器
4.3 简单元素操作(模拟登录网易邮箱)
4.4 鼠标事件
4.5 键盘事件
4.6 获得验证信息
4.7 设置元素等待
A. 定位元素
1 . id定位:find_element_by_id()
2 . name定位:find_element_by_name()
3 . class定位:find_element_by_class_name()
4 . tag(标签名)定位:find_element_by_tag_name()
5 . link定位:find_element_by_link_text()
6 . partial link 定位:find_element_by_partial_link_text()
7 . Xpath定位:Xpath语法 最常用最好用
8 . css定位:css可以较为灵活地选择控件的任意属性,一般情况下定位速度要比XPath快。
9 . 用By定位元素
By定位元素示例
find_element(By.ID,"id")
find_element(By.NAME,"name")
find_element(By.CLASS_NAME,"class")
find_element(By.TAG_NAME,"div")
find_element(By.LINK_TEXT,"内容")
find_element(By.XPATH,"Xpath语法")
find_element(By.CSS_SELECTOR,"css选择器常见语法")
CSS选择器的常见语法
选择器 | 例子 | 描述 |
---|---|---|
.class | .intro | class选择器,选择class="intro"的所有元素 |
#id | #firstname | id选择器,选择id="firstname"的所有元素 |
* | * | 选择所有元素 |
element | p | 元素所有 p 标签元素 |
element>element | div>input | 选择父元素为 div 标签的所有 input 标签元素 |
element+element | div+input | 选择同一级中紧接在 div 标签元素之后的所有 input 标签元素 |
[attribute=value] | [target= _blank] | 选择 target="_blank" 的所有元素 |
#通过class/id/标签名
find_element_by_selector("在这里填入 标签名/.class/#id ")
#通过父子关系定位(举例)
find_element_by_selector("span>input")
#通过属性定位(举例)
find_element_by_selector('[type="submit"])
find_element_by_selector('[name="username"]')
find_element_by_selector('[autocomplete="off"]')
#组合定位(将上述策略组合使用)
find_element_by_selector("span.classname>input.username") #选择类名为classname的span标签下的类名为username的input标签
B. 控制浏览器
1 . 控制浏览器大小
driver.set_window_size(width,height)
2 . 控制浏览器后退、前进
driver.back()
driver.forward()
3 . 刷新当前页面
driver.refresh()
C. 简单元素操作
定位之后对这个元素进行操作,或单击(按钮)或输入(输入框)
- clear():清除文本
- send_keys(*value):模拟按键输入
- click():单击元素
WebElement 接口常用办法
1 . submit():submit()方法用于提交表单。有时候submit()可以与click()方法互换来使用,submit()同样可以提交一个按钮,但submit()的应用远不及click()广泛。
- size:返回元素的尺寸
- text:获取元素的文本
- get_attribute(name):获取属性值
- is_displayed():设置该元素是否用户可见
#获取元素尺寸
size = driver.find_element_by_id('example').size
#获取元素文本
text = driver.find_element_by_id('example').text
#获取属性值,可以是id/name/type/其他任意属性
attribute = driver.find_element_by_id('example').attribute('属性')
#元素是否可见,返回True/False
result = driver.find_element_by_id('example').is_displayed()
D. 鼠标事件
#导入提供鼠标操作的类
from selenium.webdriver.common.action_chains import ActionChains
1 . 鼠标右击操作
#定位到要右击的元素
right_click = driver.find_element_by_id('example')
#对定位到的元素执行鼠标右键操作context_click()
ActionChains(driver).context_click(right_click).perfrom()
2 . 鼠标悬停
#定位到要悬停的元素
above = driver.find_element_by_id('example')
#对定位到的元素执行悬停操作move_to_element()
ActionChains(driver).move_to_element(above).perform()
3 . 鼠标双击操作
#定位到要双击的元素
double_click = driver.find_element_by_id('example')
#对定位到的元素执行悬停操作double_click()
ActionChains(driver).double_click(double_click).perform()
4 . 鼠标拖放操作
#定位元素的原始位置
element = driver.find_element_by_id('example')
#定位元素要移动到的目标位置
target = driver.find_element_by_id('example')
#对定位到的元素执行悬停操作
ActionChains(driver).drag_and_drop(element,target).perform()
E. 键盘事件
from selenium.webdriver.common.keys import Keys
send_keys()方法可以用来模拟键盘输入
代码 | 作用 |
---|---|
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) |
#输入空格(示例)
driver.find_element_by_id('example').send_keys(Keys.SPACE)
F. 获得验证信息
- title:用于获得当前页面的标题
- current_url:用户获得当前页面的URL
#当前页面标题
title = driver.title
#当前页面url
now_url = driver.current_url
G. 设置元素等待
大多数Web应用程序使用了ajax技术,当浏览器在加载页面时,页面上的元素并不是同时被加载完成的,因此通过设计元素等待改善可能在加载某个元素时延迟造成 ElementNotVisibleException 的情况。
warning :未经授权,不得转载
有问题的小伙伴请在下方留言,喜欢就点个赞吧;关注我,带你一起写bug
CSDN:带只拖鞋去流浪
知乎:带只拖鞋去流浪
哔哩哔哩:带只拖鞋去流浪