selenium(5):常用的8种元素定位
selenium的webdriver提供了18种(注意不是8种)的元素定位方法,比较常用的定位方法是如下8种,xpath和css定位更加灵活,需要重点掌握其中一个。
经常会用到的8种定位:
1.id定位:find_element_by_id(self, id_)
2.name定位:find_element_by_name(self, name)
3.class定位:find_element_by_class_name(self, name)
4.tag定位:find_element_by_tag_name(self, name)
5.link定位:find_element_by_link_text(self, link_text)
6.partial_link定位find_element_by_partial_link_text(self, link_text)
7.xpath定位:find_element_by_xpath(self, xpath)
8.css定位:find_element_by_css_selector(self, css_selector)
一、id定位:find_element_by_id(self, id_)
通过上面百度搜索栏的定位,看到有个id属性:id="kw",通过它的id属性定位到这个元素,同时在定位到搜索框后,用send_keys()方法,输入文本。
二、name定位:find_element_by_name(self, name)
通过上面百度新闻的定位,看到有个name属性:name="tj_trnews",通过它的name属性单位到这个元素。
三、class定位:find_element_by_class_name(self, name)
通过上面百度搜索栏的定位,看到有个class属性:class="s_ipt",通过它的class属性单位到这个元素。
四、tag定位:find_element_by_tag_name(self, name)
在上面的定位元素属性中,可以看到每个元素都有tag(标签)属性。如搜索框的标签属性input ,在一个页面中,相同的标签有很多,一般不用标签来定位。下面的例子,仅供参考和理解,运行会报错.
五、link定位:find_element_by_link_text(self, link_text)
定位百度页面上"hao123"这个按钮,从元素属性可以分析出,有个href = "http://www.hao123.com”说明它是个超链接,对于这种元素,可以用link属性定位。
六、partial_link定位find_element_by_partial_link_text(self, link_text)
有时候一个超链接它的字符串比较长,输入全称会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串进行模糊匹配方式(截取其中一部分字符串)。例如在五中的例子“hao123”,只需输入“ao123”也可以定位到。
七、xpath定位:find_element_by_xpath(self, xpath)
以上定位方式都是通过元素的某个属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,这么办呢?或者说它的属性很多重复的。这个时候就可以用xpath解决。这个时候就可以用xpath解决。
八、css定位:find_element_by_css_selector(self, css_selector)
css是另外一种语法,比xpath更为简洁