第一个脚本已经完成,大家都已经知道对元素的点击,输入等操作都是通过先识别元素后驱动执行动作完成的,必然元素定位是selenium自动化中的重中之重,废话不多少,搞起来~
一、元素定位的方法
id
name
class name
link text 可点击的文本(全匹配)
partial link text 同上(部分匹配)
tag name
xpath 功能强大
css selector 绝技
二、定位方法解析
<1> id和name
这两种最常用,但是一般很多前端程序员都不太喜欢写,因为确实太多了,很麻烦(前端别打我)
例:使用Chrome(谷歌浏览器)打开百度首页,鼠标选中百度搜索框,右击,选择“检查”:
如上,我们看到元素和前端标签是对应起来的,百度搜索框元素对应的 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是否唯一?
微微一笑很完美,唯一的,所以在使用的时候不用考虑错乱重复等问题。
<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利用他们进行相关元素的定位:
如图,百度搜索框对应的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~如果你觉得还行,大家一起学习,共同进步~
扫码关注,精彩不容错过