第一个脚本已经完成,大家都已经知道对元素的点击,输入等操作都是通过先识别元素后驱动执行动作完成的,必然元素定位是selenium自动化中的重中之重,废话不多少,搞起来~

【selenium-04】元素定位<1>_搜索

一、元素定位的方法

  1. id            

  2. name

  3. class name

  4. link text  可点击的文本(全匹配)

  5. partial link text  同上(部分匹配)

  6. tag name

  7. xpath          功能强大

  8. css selector      绝技

二、定位方法解析

<1>  id和name

这两种最常用,但是一般很多前端程序员都不太喜欢写,因为确实太多了,很麻烦(前端别打我)

例:使用Chrome(谷歌浏览器)打开百度首页,鼠标选中百度搜索框,右击,选择“检查”:

【selenium-04】元素定位<1>_搜索_02

如上,我们看到元素和前端标签是对应起来的,百度搜索框元素对应的 id=‘kw’,name=‘wd’,这就解释了我们上节的脚本,为什么选择使用:

fuck_test.find_element_by_id("kw").send_keys(u"搞测试")

当然,使用name也是可以定位到百度搜索框的:

fuck_test.find_element_by_name("wd").send_keys(u"搞测试")

百度一下这个按钮同理,事实证明id和name简单好用,​不过需要注意的是要确定这个id的唯一性​,我们可以将这个id或name的值复制,CTRL+F,CTRL+C,就可以看到这个元素的id,name是否唯一?

【selenium-04】元素定位<1>_搜索_03

微微一笑很完美,唯一的,所以在使用的时候不用考虑错乱重复等问题。

<2>  tag name和class name

如同上图,搜索框的元素标签类型为input,我们就可以选择使用tag name等于input进行元素定位:

fuck_test.find_element_by_tag_name("input").send_keys(u"搞测试")

如同上图,搜索框的class=“s_ipt”,我们就可以选择使用class name等于s_ipt进行元素定位:

fuck_test.find_element_by_class_name("s_ipt").send_keys(u"搞测试")

就是这么流畅~

<3>  css定位

css原为html页面的样式,用来描述HTML和XML的,这里selenium利用他们进行相关元素的定位:

【selenium-04】元素定位<1>_元素定位_04

如图,百度搜索框对应的HTML代码为黄色部分,对应的css样式为#kw,所以:

fuck_test.find_element_by_css_selector("#kw").send_keys(u"搞测试")

同样可以实现元素定位,当然css_selector方法也可以结合元素标签类型以及id,name等属性共同定位。

<4>  xpath定位

xpath,简单粗暴,无脑高效

找到元素对应的HTML代码块后,右击,选择copy→copy xpath

fuck_test.find_element_by_xpath("XXX").你想进行的操作

将copy到的xpath粘贴到XXX处即可,完了 -。-

当然你想研究xpath的写法最好,不过貌似没有直接复制来得直接 -。-

百度搜索框的xpath为://*[@id="kw"]

<5>  link text 和 partial link text

link text顾名思义,当我们懒得去copy xpath或者看id,name等属性的时候,我们看到百度搜索按钮就叫百度一下,那我们直接:

fuck_test.find_element_by_link_text(u"百度一下").click()

即可

那partial link text就更简单了:

fuck_test.find_element_by_link_text(u"度一下").click()

搞定,祝大家看的开心~


兄dei~如果你觉得还行,大家一起学习,共同进步~

【selenium-04】元素定位<1>_百度_05


扫码关注,精彩不容错过

【selenium-04】元素定位<1>_元素定位_06