1.ID定位
元素id的值在当前整个HTML页面当中是唯一的,所以可以通过id属性来唯一定位这个元素
示例代码:
driver.find_element_by_id("kw)
注意有些系统中元素id每次访问都不一样,这种情况下就不适合用id来定位元素。
2.name定位
示例代码:
driver.find_element_by_name("wd")
3.class name定位
元素的class属性主要是来元素进行分组,并对这一级的元素设置相同的样式。
示例代码:
driver.find_element_by_claa_name("s_ipt")
注意:class属性有空格隔开时,应只保留隔开一部分作为定位参数,如“<a href="//ke.qq.com" class="header-index-logo js-header-index-logo" report-tdw="action=rainbow-logo-clk" title="腾讯课堂_专业的在线教育平台"></a>”
错误的classname定位方式:
driver.find_element_by_class_name("header-index-logo js-header-index-logo")
正确的classname定位方式为:
driver.find_element_by_class_name("header-index-logo") #或者 driver.find_element_by_class_name("js-header-index-logo")
4.tag name定位
示例代码:
driver.find_element_by_tag_name("a")
5.link定位
链接文本内容全部匹配,如<a href="//ke.qq.com/course/373394" target="_blank" class="item-tt-link" title="高中数学寒假冲刺班" report-tdw="action=Coursecard_Coursesname-clk&ver1=373394&ver3=custom-course.高中免费体验课.1.2" cors-name="course"></a>“”
示例代码:
driver.find_element_by_link_text("高中数学寒假冲刺班")
6.partial link定位
链接文本内容部分匹配
示例代码:
driver.find_element_by_partial_link_text("高中数学")
7.xpath定位
前面6种定位方式都是针对元素的单一属性来定位的,实际应用中经常需要组合以上各种情况才能定位到一个元素。
xpath和css定位就能实现各种组合,基本可以覆盖所有元素的定位。
示例代码:
driver.find_element_by_xpath("//img[@class="tang-pass-qrcode-img"])
8.CSS定位
示例代码:
driver.find_element_by_css_selector('.ant-modal-body>span[class*="ant-select"]')
当我们想在页面中找到一组元素,比如当前页面中的所有链接时,我们可以用find_elements_by_name(class_name/tag_name/link_text/partical_link_text/xpath/css_locator)来定位。
此函数返回的是一个列表,列表中存储的是符合定位表达式的所有元素。
关于xpath定位的方法,后面会有单独一篇文章来详细介绍。