Selenium定位网页元素只要是通过元素的属性值或者元素在HTML里的路径位置,定位方式一共有8种:
定位方式代码属性idfind_element_by_id()属性namefind_element_by_name()HTML标签类型find_element_by_tag_name()属性classfind_element_by_class_name()标签值find_element_by_link_text()标签值模糊匹配find_element_by_partial_link_text()元素的路径定位选择器find_element_by_xpath()元素的路径定位选择器find_element_by_css_selector()
以上8种定位都只能定位一个元素,如果有多个相同的元素那么会定位到第一个元素。
其中挑几个重点讲一下:
1.id和name在一个页面往往是唯一的所以他们的定位准确度较高。2.classname和tagname一般是被很多个元素使用,如果要定位单一元素的话慎用(毕竟你也很难看出来你需要的元素是不是第一个)。
3.linktest一般是用来定位某些超链接的,因为超链接的text比较唯一,比如百度主页上方的超链接。
同时加个partial就可以实现模糊匹配,比如要匹配新闻这个链接就只需要一个‘新’就可以了,当然如果有多个元素含有‘新’就只能定位到第一个了。
4.xpath和css_selector,前者是定位选择器,后者是通过标签的路径来实现定位,两者的定位准确的都非常高,但是一但HTML代码发现更改就几乎无法复用。同时说一下怎么获取一个元素的xpath和css_selector
,Ctrl+F12后在Elements中选取自己想要定位的HTML元素然后右键就可以点击copy,copy想要copy的内容了。
上述的都只能定位一个元素,如果要定位很多个相同的元素就需要换用一下的方式了(其实就是element加了个s):
定位方式代码属性idfind_elements_by_id()属性namefind_elements_by_name()HTML标签类型find_elements_by_tag_name()属性classfind_elements_by_class_name()标签值find_elements_by_link_text()标签值模糊匹配find_elements_by_partial_link_text()元素的路径定位选择器find_elements_by_xpath()元素的路径定位选择器find_elements_by_css_selector()
版权归原作者 今天也是敲代码的一天哦 所有, 如有侵权,请联系我们删除。