20170922学习笔记Selenium 2第四章WebDriver API 4.1定位元素

4.1从定位元素开始
八种元素定位的方法,及对比
1. id ---5.name (id唯一,name不唯一)
2. class name ---6.tag name (通过tag识别某个元素的概率很低)
3.link text ---7.partial link text
4.xpath ---8.css selector (尽量用css,因为css的效率比xpath要高)

find_element_by_id()
find_element_by_classname()
find_element_by_link_text()
find_element_by_xpath()

4.1.1id定位
id的属性,在HTML文档中必须是唯一的。
#通过查看百度的前端代码,查看搜索输入框的id为kw。
find_element_by_id("kw")
4.1.2name定位
name的属性值,在HTML中,可以不唯一。

find_element_by_name("wd")

4.1.3class定位
通过class属性来定位。
find_element_by_class_name("s_ipt")

4.1.4tag定位
因为html的本质是通过tag来定义实现不同功能。存在大量的tag。所以用tag来识别某一元素概率较低。
find_element_by_tag_name("input")
4.1.5link定位
link定位,专门用来定位文本链接。通过元素之间的文本信息来定位标签。
find_element_by_link_text("新闻")

4.1.6partial link定位
partial link 是对link的一种补充。对于较长的文本链接,会截取其中一部分来定位。只要这一部分可以唯一标识这个链接。
driver .find_element_by_partial_link_text( "一个很长的" )
driver .find_element_by_partial_link_text( "文本链接" )

xpath和css比前面几种更加灵活
4.1.7xpath定位
绝对路径定位,需要一层一层的往下找。如果同级有多个相同标签,需要标注从上往下的第几个。例如下方百度的搜索文本输入框的定位:
driver .find_element_by_xpath( "/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input" ).send_keys( "Selenium3" )
虽然准确,但是效率很低。
使用元素属性定位
Xpath也可以利用元素属性来定位,例如百度输入框
#driver.find_element_by_xpath("//input[@id='kw']").send_keys("Selenium3") #使用xpath 元素属性定位
层级和属性结合
driver.find_element_by_xpath( "//form[@id='form']/span/input" ).send_keys( "尹巧灵" )
使用逻辑运算符
通过and来附加多个条件。
driver.find_element_by_xpath("//input[@id='kw'and @class='s_ipt']").send_keys("loveyou")#使用逻辑运算符
学会定位xpath
使用火狐浏览器,打开测试网页,点击之前安装的firepath,里面有xpath。可以直接复制定位路径。
4.1.8css定位
css使用选择器来为页面元素绑定属性。这些选择器也可以被Selenium使用。
1)通过class属性定位
点号. 表示通过class
find.element_by_css_selector(”.s_ipt")
2)通过id属性定位:
#井号表示id属性
find_element_by_css_selector("#kw")
3)通过标签名来定位
可以直接使用标签名,但是重复概率较大。
find.element_by_css_selector(”input")
1> 通过>大于号表示父子关系。
find.element_by_css_selector(”.span>input") span是父亲元素。input是子元素
2> 通过属性定位
find.element_by_css_selector(”[name='kw']")
对属性值kw,可以加引号,也可以不加。但要注意整个字符串的引号区分。引号不能交叉用,可以嵌套。
3> 组合定位
css可以通过标签,父子关系,属性,id。组合定位元素。
driver .find_element_by_css_selector( "form#form>span>input.s_ipt" ).send_keys( "loveyou" )
4.1.9用BY定位元素
除了前面介绍的八种方法,webview还有另一套写法,即统一调用find_element()方法,通过BY来声明定位的方法,并对定位方法传递参数。具体如下:
find_element(By.ID,"kw")
find_element(By.NAME,"wd")
find_element(By.CLASS,"s_ipt")
find_element(By.TAG_NAME,"input")
find_element(By.LINK_TEXT,"新闻")
find_element(By.PARTIAL_LINK_TEXT,"新")
find_element(By.XPATH,"//*[@class='bg.s_btn']")
find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值