id定位
find_element_by_id()
例如:
find_element_by_id(“companyToken”)
name定位
find_element_by_name()
例如:
find_element_by_name(“compToken”)
tag定位(html通过tag来定义不同的页面元素,如一般用来定义输入框,标签用来定义超链接等
find_element_by_tag_name()
例如:
find_element_by_tag_name(“input”)
class定位(html规定用class来指定元素的类名)
find_element_by_class_name()
例如:
find_element_by_class_name(“form-control the-padding-left”)
link_text定位(专门用来定义文本链接)
find_element_by_link_text()
例如:
find_element_by_link_text(“新闻”)
partial link 定位(对link定位的补充,当文字链接比较长时,可只选取其中一部分文字进行定位,只要这部分文字可以唯一标识链接即可)
find_element_by_partial_link_text()
例如:
find_element_by_partial_link_text(“闻”)
Xpath定位————————find_element_by_xpath()
在xml文档中,xpath是一种定位元素的语言,因为html可以看做是xml的一种实现,所以Webdriver提供了这种在web定位元素的方法。
1、绝对路径定位
用标签名的层级关系来简单直观的写出元素的绝对路径
例如智慧外勤登陆界面找到企业编号输入框:
find_element_by_xpath("/html/body/div/div[2]/div/div/div/form/fieldset/label/span/input")
div[2]表示当前层级下第二个div标签。
2、利用元素属性定位
例如:
find_element_by_xpath("//input[@id=‘companyToken’]")
注释: //input表示当前页面某个input标签,[@id=‘id值’]表示这个属性id值为id值
name和class也一样
如果不想指定标签名,则可用()代替,例如:
find_element_by_xpath("//[@name=‘username’]")
3、层级与属性结合定位
当出现某个元素本身没有可以唯一标识这个元素的属性值,则可查找其上一级元素。如果他上一级的元素有唯一标识的属性值,就可以拿来用
例如,假如企业账号输入框无唯一标识的属性,则可以找其上一级span,如果也没有就继续找上一级,直到有为止:
find_element_by_xpath("//form[@id=‘loginForm’]/fieldset/label/span/input")
4、逻辑运算符
如果一个属性不能唯一区分一个元素,则可以用逻辑运算符连接多个属性来查找元素
例如:
find_element_by_xpath("//input[@id=‘companyToken’ and @name=‘companyToken’]")
5、使用contains方法
contains方法用于匹配一个属性中包含的字符串。例如智慧外勤,企业账号输入框的class=“form-control the-padding-left”
find_element_by_xpath("//input[@class=‘from-control’]")
6、使用text()方法
text()方法用于匹配显示文本信息。例如前面link text定位的文字链接
find_element_by_xpath("//a[text(),‘新闻’]")
contains方法和text方法也可同时使用,例如
find_element_by_xpath("//a[contains(taxt(),‘闻’)]")
CSS_selector定位——————————find_element_by_css_selector
CSS是一种语言,用来描述HTML和XML文档的表现。CSS选择器可以较为灵活的选择控件的任意属性,一般情况下,CSS定位速度比Xpath要快。
CSS选择器的常见用法
(1).class——.A——class选择器,选择class=“A"的所有元素
(2)#id——#username——id选择器,选择id=“username"的所有元素
(3)————选择所有元素
(4)element——p——选择所有
元素
(5)element>element——div>input——选择父元素为
(6)element+element——div+input——选择同一级中紧接在
(7)[attribute=value]——[target=_blank]——选择 target=”_blank” 的所有元素
1、通过class定位
find_element_by_css_selector(".类名")
2、通过id定位
find_element_by_css_selector("#id名")
3、通过标签名定位
find_element_by_css_selector(“标签名”)
4、通过标签层级关系定位
find_element_by_css_selector(“父标签名>要定位的标签名也是子标签名”)
5、通过属性定位
find_element_by_css_selector("[属性名=‘属性值’]")
6、组合定位
比如我们要定位的属性是input,他的元素class属性为s_ipt,且他有一个父元素,标签名为span。父元素还有父元素,标签名为form,class属性为fm。
可以:find_element_by_css_selector(“form.fm > span > input.s_ipt”)
或者:find_element_by_css_selector(“form#form > span > input#kw”)
7、更多定位用法
查找class属性包含“s_ipt_w”字符串的元素
find_element_by_css_selector("[class*=s_ipt_w]")
查找class属性以“bg”字符串开头的元素
find_element_by_css_selector("[class^=bg]")
查找class属性以“warp”字符串结尾的元素
find_element_by_css_selector("[class$=warp]")
查找form标签下第2个input标签的元素
find_element_by_css_selector(“form > input:nth-child(2)”)
更多用法参考:W3CSchool网站
By定位元素————————find_element(By.属性名,“属性值”)