【二】【selenium+python】发现页面元素的方法介绍
本片文章拿百度首页测试
一。id定位 : find_element_by_id()
example. find_element_by_id("kw") 定位输入框
find_element_by_id("su") 定位百度一下按钮
二。name定位 : find_element_by_name()
example. find_element_by_name("wd") 定位输入框
三。class定位: find_element_by_class_name()
example. find_element_by_class_name("s_ipt") 定位输入框
find_element_by_class_name("bg s_btn") 定位百度一下按钮
四。tag(标签)定位: find_element_by_tag_name()
example. find_element_by_tag_name("input") 你会发现,百度输入框与百度按钮的tag一样,所以不好定位
一般定位方法不用find_element_by_tag_name()
五。link定位 : 此方法与其他定位方法不一样,专门用于定位文本链接 find_elemnet_by_link_text()
example. find_element_by_link_text("新闻") 百度首页右上角新闻按钮
find_element_by_link_text(“hao123”) 百度首页右上角hao123按钮
此外。find_element_by_partial_link_text() 是对link定位的一个补充,很可能有些文本链接会比较长,这个时候这个partial_link就是截取部分文本链接
六。xpath定位: find_element_by_xpath("")
1.绝对路径定位
如上图find_element_by_xpath("/html/body/div[2]/div/div/div/div/form/input") 定位百度输入框
xpath主要是用标签名的层级关系来定位元素的绝对路径。如果当前层级下有多个相同的标签名,那么按上下顺序确定是第几个。
2.利用元素属性定位 :除了绝对路径外,Xpath也可以用元素的属性值来定位
以百度输入框和搜索按钮为例
find_element_by_xpath("//input[@id="kw"]")
find_element_by_xpath("//input[@id="su"]")
//表示当前页面某个目录下,input表示定位元素的标签名,@id="kw表示这个元素的id属性值等于kw。元素的任意属性值可以使用,只要它能唯一的标识一个元素,例如
find_element_by_xpath("//input[@autocomplete="off"]")
2.1 层级与属性的结合
如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找上一级元素,如果它的上一级元素有可以表示的唯一属性值,也可以拿来使用。例如 find_element_by_xpath("//span[@class="bs s_ipt_wr"]/input")
七。CSS定位