参考书籍:python自动化开发实战 - 黄永祥
一、通过属性id和name来实现定位:
browse.find_element_by_id() browse.find_element_by_name()
find_element_by_id和find_element_by_name分别通过元素属性id和name的属性值来定位。如果被定位的元素不存在属性id或name,则无法使用这种定位方式。通常情况下,一个网页中,元素的id或name的属性值是唯一的,如果多个元素的id或name相同,这种定位方式只能定位第一个元素。
二、通过html标签类型和属性class实现定位:
browse.find_element_by_class_name() browse.find_element_by_tag_name()
find_element_by_class_name和find_element_by_tag_name分别通过元素属性class和元素标签类型进行定位。在一个网页里,属性class的属性值可以被多个元素使用,同一个元素标签也可以多次使用,正因如此,这两种定位方式只能定位符合条件的第一个元素。
三、通过标签值实现定位,partial_link用于模糊匹配
browse.find_element_by_link_text() browse.find_element_by_partial_link_text()
find_element_by_link_text和find_element_by_partial_link_text是根据标签值进行定位。比如单击豆瓣电影网的排行榜,通过网页的文字来对元素进行定位。若网页中的文字并不是唯一,那么Selenium也是默认定位第一个符合条件的元素。
四、元素的路径定位选择器
browse.find_element_by_xpath() browse.find_element_by_css_selector()
find_element_by_xpath和find_element_by_css_selector是由xpath和css_selector实现定位,两者是一个定位选择器,通过标签的路径来实现定位。标签的路径是指当前标签在整个HTML代码里的代码位置,比如<body>里的第二个<div>标签,<div>又嵌套<p>标签,那么<p>的路径为body -> div[1] -> p。这种定位方式相对前面的定位较为精准,因为每个标签的路径都是唯一的。
五、如果想要获取全部符合条件的元素
browse.find_elements_by_id() browse.find_elements_by_name() browse.find_elements_by_class_name() browse.find_elements_by_tag_name() browse.find_elements_by_link_text() browse.find_elements_by_partial_link_text() browse.find_elements_by_xpath() browse.find_elements_by_css_selector()
区别就是elements和element。