Selenium webdriver 元素定位方法总结
2016-07-01 13:46
477 查看
<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd"/>
<a class="mnav" name="test" href="http://news.baidu.com">新闻板块</a>
上面是百度输入框的代码
from selenium import webdriver
1. find_element_by_id("kw")
2. find_element_by_name("wd")
3. find_element_by_class_name("s_ipt")
4. find_element_by_tag_name("input")
5. find_element_by_link_text("新闻板块")
6. find_element_by_partial_link_text("新")
7.1 XPath-绝对路径定位:
绝对路径类似于你家的地址:XX市XX区XX路XX号;也就是说从最外层的标签开始往里数就可以了
例如百度输入框的绝对路径:
find_element_by_xpath("html/body/div[3]/div/div/div/div/form/span/input")
div[3] 代表当前层级第3个div
7.2 XPath-利用元素属性定位
find_element_by_xpath("//input[@id='kw']")
find_element_by_xpath("//input[@name='wd']")
find_element_by_xpath("//*[@id='kw']")
//input表示查找页面上所有的input元素
//*表示查找页面上所有元素
//input[1]表示查找页面上第一个input元素
//form[1]/input 表示查找第一个form元素下一级的input元素
//form[1]//input 表示查找页面上第一个form元素下的所有input元素,不管嵌套了多少层
//input[@id='kw' and @class='su'] 可以用 and 连接多个属性来唯一标识一个元素
Firepath可以生成XPath
8.css定位
find_element_by_css_selector("#kw") #符号表示通过ID属性来定位元素
find_element_by_css_selector(".s_ipt") 点符号(.)表示通过class属性来定位元素
find_element_by_css_selector("input") 通过Tag标签来定位元素时不需要任何符号
find_element_by_css_selector("[id=kw]") 通过属性和属性值来定位元素,可以使用任意属性,例如 [type=submit]
find_element_by_css_selector(“span>input”) 通过父子关系定位元素
find_element_by_css_selector(“span+input”) 表示查找同一级紧挨着span的input元素
以上几种方式还可以综合使用
我个人喜欢用By定位元素
要使用By需要先import
from selenium.webdriver.common.by import By
1. find_element(By.ID,"kw")
2. find_element(By.NAME,"wd")
3. find_element(By.CLASS_NAME,"s_ipt")
4. find_element(By.TAG_NAME,"input")
5. find_element(By.LINK_TEXT,"新闻板块“)
6. find_element(By.PARTIAL_LINK_TEXT,"新”)
7. find_element(By.XPATH,"//*[@class='s_ipt']")
8. find_element(By.CSS_SELECTOR,“#kw”)
<a class="mnav" name="test" href="http://news.baidu.com">新闻板块</a>
上面是百度输入框的代码
from selenium import webdriver
1. find_element_by_id("kw")
2. find_element_by_name("wd")
3. find_element_by_class_name("s_ipt")
4. find_element_by_tag_name("input")
5. find_element_by_link_text("新闻板块")
6. find_element_by_partial_link_text("新")
7.1 XPath-绝对路径定位:
绝对路径类似于你家的地址:XX市XX区XX路XX号;也就是说从最外层的标签开始往里数就可以了
例如百度输入框的绝对路径:
find_element_by_xpath("html/body/div[3]/div/div/div/div/form/span/input")
div[3] 代表当前层级第3个div
7.2 XPath-利用元素属性定位
find_element_by_xpath("//input[@id='kw']")
find_element_by_xpath("//input[@name='wd']")
find_element_by_xpath("//*[@id='kw']")
//input表示查找页面上所有的input元素
//*表示查找页面上所有元素
//input[1]表示查找页面上第一个input元素
//form[1]/input 表示查找第一个form元素下一级的input元素
//form[1]//input 表示查找页面上第一个form元素下的所有input元素,不管嵌套了多少层
//input[@id='kw' and @class='su'] 可以用 and 连接多个属性来唯一标识一个元素
Firepath可以生成XPath
8.css定位
find_element_by_css_selector("#kw") #符号表示通过ID属性来定位元素
find_element_by_css_selector(".s_ipt") 点符号(.)表示通过class属性来定位元素
find_element_by_css_selector("input") 通过Tag标签来定位元素时不需要任何符号
find_element_by_css_selector("[id=kw]") 通过属性和属性值来定位元素,可以使用任意属性,例如 [type=submit]
find_element_by_css_selector(“span>input”) 通过父子关系定位元素
find_element_by_css_selector(“span+input”) 表示查找同一级紧挨着span的input元素
以上几种方式还可以综合使用
我个人喜欢用By定位元素
要使用By需要先import
from selenium.webdriver.common.by import By
1. find_element(By.ID,"kw")
2. find_element(By.NAME,"wd")
3. find_element(By.CLASS_NAME,"s_ipt")
4. find_element(By.TAG_NAME,"input")
5. find_element(By.LINK_TEXT,"新闻板块“)
6. find_element(By.PARTIAL_LINK_TEXT,"新”)
7. find_element(By.XPATH,"//*[@class='s_ipt']")
8. find_element(By.CSS_SELECTOR,“#kw”)
相关文章推荐
- 使用Dom4J遍历Xml文件并获得相应Jtree模型
- 配置eclipse运行环境
- 做开发,也要多一些UI设计上的思考
- zone的命令行配置
- Android最新支持包Design简介
- RCP编程技巧:在程序中如何调用ant?
- 面向对象编程
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- trace openjdk from systemtap
- js图片上传前检测大小
- 程序员为省饭钱 黑进餐馆系统办“永久饭票”
- 实现背景透明兼容各浏览器解决方法
- RCP编程技巧:在程序中如何关闭一个ViewPart?
- 微软说它深爱着 Linux,现在它用行动证明了
- Swift - UIPasteboard剪贴板的使用详解(复制、粘贴文字和图片)
- alter table <表名 > add constraint <主键名>用法
- 【jmeter】non-gui模式运行
- Log安卓开发中常用的优秀日志工具
- [HTC教程] HTC相关开发所需SDK等工具都在这里了。
- python错误锦集及各种packages安装