前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

WebDriver-八种元素定位


1.id定位

HTML规定id属性在HTML文档中必须是唯一的。

如:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

find_element_by_id("kw")

2.name定位

HTML规定name属性指定元素名称,在当前页面可以不唯一。

如:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

find_element_by_name("wd")

3.class定位

HTML规定class指定元素类名。

如:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

find_element_by_class_name("s_ipt")

4.tag定位

HTML本质是通过tag来定义实现不同的功能,每个元素本质是一个tag。因tag用来定义一类功能,所以通过tag识别某个元素概率很低。

find_element_by_tag_name("input")

find_element_by_tag_name("div")

find_element_by_tag_name("a")

5.link定位

专门用来定位文本链接。如:


find_element_by_link_text("新闻")

find_element_by_link_text("hao123")

find_element_by_link_text("地图")

6.partial link定位

是对link定位的补充,有些链接很长,我们可以通过这个定位取文本链接的一部分。

如:

<a class="aaa" name="bbb" href="#">你好啊,我有一条很长名称的文本链接</a>

find_element_by_partial_link_text("你好啊")

find_element_by_partial_link_text("很长名称")

find_element_by_partial_link_text("文本链接")

7.XPath定位

XPath是一种在XML文档中定位元素的语言。HTML可看作XML的一种实现。

7.1绝对路径定位


黏贴:/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input

find_element_by_xpath("/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input")

7.2元素属性定位

如:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

find_element_by_xpath("//input[@id='kw']")

//表示当前页面某个目录下

input表示定位元素的标签名

[@id='kw']表示这个元素的id属性值等于kw

---还可以通过name和class属性来定位,其他任意属性都可以使用。

find_element_by_xpath("//input[@name='wd']")

find_element_by_xpath("//input[@class='s_ipt']")

find_element_by_xpath("//*[@name='wd']")

注:不想指定标签名,可以用*号代替。

7.3层级与属性结合定位

如果一个元素没有唯一标识的属性值,可以找上一级元素可以唯一标识的属性值使用。



假设输入框没有唯一标识的属性值,我们可以查找它上一级属性。

find_element_by_xpath("//span[@id='s_kw_wrap']/input")

find_element_by_xpath("//span[@class='bg s_ipt_wr new-pmd quickdelete-wrap']/input")



或者再往上级找:

find_element_by_xpath("//form[@id='form']/span/input")



或者找第二个span的input(百度一下按钮):

find_element_by_xpath("//form[@id='form']/span[2]/input")




7.4使用逻辑运算符

......

<input id="kw" class="su" name="ie">

<input id="kw" class="aa" name="ie">

<input id="bb" class="su" name="ie">

........

如上代码通过id或class属性去定位元素都会存在重复。

如果一个属性不能唯一区分一个元素,我们可以使用逻辑运算符“and”来连接两个条件去定位元素。

find_element_by_xpath("//input[@id='kw' and class='su']/span/input")

8.CSS定位

CSS(Cascading Style Sheets)是一种语言,用来描述HTML和XML文档的表现。CSS使用选择器来为页面元素绑定属性。



8.1通过class属性定位

.号表示通过class属性来定位元素

find_element_by_css_selector(".s_ipt")

find_element_by_css_selector(".btn self-btn bg s_btn")

8.2通过id属性定位

#号表示通过id属性来定位元素

find_element_by_css_selector("#kw")

find_element_by_css_selector("#su")

8.3通过标签名定位

不需要任何符号标识。

find_element_by_css_selector("input")

或通过父子关系定位

find_element_by_css_selector("span>input")

或通过属性定位

find_element_by_css_selector("[name='kw']")

find_element_by_css_selector("[type='submit']")

或组合定位

find_element_by_css_selector("form.fm>span#s_kw_wrap>input.s_ipt")


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言