Xpath定位 方法
driver.find_element_by_xpath()
利用元素属性
说明:快速定位元素,利用元素唯一属性;
示例://*[@id=‘userA’]
层级与属性结合
说明:要找的元素没有属性,但是它的父级有;
示例://*[@id=‘p1’]/input
属性与逻辑结合
说明:解决元素之间个相同属性重名问题
示例://*[@id=‘telA’ and @class=‘telA’]
Xpath-延伸
//[text()=“xxx”] 文本内容是xxx的元素
//[starts-with(@attribute,‘xxx’)] 属性以xxx开头的元素
//*[contains(@attribute,‘Sxxx’)] 属性中含有xxx的元素
CSS定位 方法
driver.find_element_by_css_selector()
id选择器
说明:根据元素id属性来选择
格式:#id 如:#userA <选择id属性值为userA的所有元素>
class选择器
说明:根据元素class属性来选择
格式:.class 如:.telA <选择class属性值为telA的所有元素>
元素选择器
说明:根据元素的标签名选择
格式:element 如:input <选择所有input元素>
属性选择器
说明:根据元素的属性名和值来选择
格式:[attribute=value] 如:[type=“password”] <选择所有type属性值为password的值>
层级选择器
说明:根据元素的父子关系来选择
格式:element>element 如:p>input <返回所有p元素下所有的input元素>
提示:> 可以用空格代替 如:p input 或者 p [type=‘password’]
CSS延伸
- input[type^=‘p’] 说明:type属性以p字母开头的元素
- input[type$=‘d’] 说明:type属性以d字母结束的元素
- input[type*=‘w’] 说明:type属性包含w字母的元素
定位方式 | xpath | css |
---|---|---|
元素名 | //input | input |
id定位 | //input[@id=‘userA’] | #userA |
class | /*[@class=‘telA’] | .telA |
属性 | //*[text()=“xxx”] | input[type$=‘d’] |
属性 | //*[starts-with(@attribute,‘xxx’)] | input[type^=‘p’] |
属性 | //*contains(@attribute,‘xxx’)] | input[type*=‘w’] |
By类的方法
from selenium.webdriver.common.by import By
方法:find_element(By.ID,“userA”)
备注:需要两个参数,第一个参数为定位的类型由By提供,第二个参数为定位的具体方式
示例:
1. driver.find_element(By.CSS_SELECTOR,’#emailA’).send_keys("[email protected]")
2. driver.find_element(By.XPATH,’//*[@id=“emailA”]’).send_keys(‘[email protected]’)
3. driver.find_element(By.ID,“userA”).send_keys(“admin”)
4. driver.find_element(By.NAME,“passwordA”).send_keys(“123456”)
5. driver.find_element(By.CLASS_NAME,“telA”).send_keys(“18611111111”)
6. driver.find_element(By.TAG_NAME,‘input’).send_keys(“123”)
7. driver.find_element(By.LINK_TEXT,‘访问 新浪 网站’).click()
8. driver.find_element(By.PARTIAL_LINK_TEXT,‘访问’).click()
元素常用操作方法
- clear() 清除文本
- send_keys() 模拟输入
- click() 单击元素
WebDriver操作浏览器常用方法
- driver.maximize_window() 最大化 --> 模拟浏览器最大化按钮
- driver.set_window_size(100,100) 浏览器大小 --> 设置浏览器宽、高(像素点)
- driver,set_window_position(300,200) 浏览器位置 --> 设置浏览器位置
- driver.back() 后退 --> 模拟浏览器后退按钮
- driver.forward() 前进 --> 模拟浏览器前进按钮
- driver.refresh() 刷新 --> 模拟浏览器F5刷新
- driver.close() 关闭 --> 模拟浏览器关闭按钮(关闭单个窗口)
- driver.quit() 关闭 --> 关闭所有WebDriver启动的窗口
WebDriver其他常用方法
- size 返回元素大小
- text 获取元素的文本
- title 获取页面title
- current_url 获取当前页面URL
- get_attribute(“xxx”) 获取属性值;xxx:要获取的属性
- is_display() 判断元素是否可见
- is_enabled() 判断元素是否可用
提示:
1. size、text、title、current_url:为属性,调用时无括号;如:xxx.size
2. title、current_url:使用浏览器实例化对象直接调用; 如: driver.title
WebDriver操作鼠标方法
说明:在WebDriver中将操作鼠标的方法封装在ActionChains类中
- context_click() 右击 --> 此方法模拟鼠标右键点击效果
- double_click() 双击 --> 此方法模拟双标双击效果
- drag_and_drop() 拖动 --> 此方法模拟双标拖动效果
- move_to_element() 悬停 --> 此方法模拟鼠标悬停效果
- perform() 执行 --> 此方法用来执行以上所有鼠标方法
代码实现关键点分析
- 导包:from selenium.webdriver.common.action_chains import ActionChains
- 实例化ActionChains对象:Action=ActionChains(driver)
- 调用右键方法:element=Action.context_click(username)
- 执行:element.perform()
拖动关键点分析
- 源元素 socure=driver.find_element_by_id(xxx)
- 目标元素 target=driver.find_element_by_id(xxx)
- 调用方法 Action.drag_and_drop(source,target).perform()
常用的键盘操作
from selenium.webdriver.common.keys import 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)