来源:python中国网 时间:2020-03-02

  所谓元素定位就是在html源码中去找目标元素,html源码有很多特征根据这些特征,Selenium提供了8种定位方式。

  (如果不知道id 、class name这些是啥,请补充基本的html css知识)

  id(id属性)

  name (name属性)

  class name (class属性)

  tag name (元素名)

  link text (链接文本)

  partial link text (链接文本模糊匹配,不用把文本写全)

  xpath(如果你不懂请看下xpath教程

  css selector(如果你不懂请看下css选择器

  这8种定位方式在Python selenium中所对应的方法为:

  find_element_by_id()

  find_element_by_name()

  find_element_by_class_name()

  find_element_by_tag_name()

  find_element_by_link_text()

  find_element_by_partial_link_text() # 模糊匹配文本

  find_element_by_xpath()

  find_element_by_css_selector()

  如果是多个元素,find_elements_by_xxx找的是所有符合条件的标签,这8种定位方式在Python selenium中所对应的方法为:

  find_elements_by_id()

  find_elements_by_name()

  find_elements_by_class_name()

  find_elements_by_tag_name()

  find_elements_by_link_text()

  find_elements_by_partial_link_text() # 模糊匹配文本

  find_elements_by_xpath()

  find_elements_by_css_selector()

  此外,Selenium还提供了通用方法find_element(),它需要传入两个参数:查找方式By和值。

  比如find_element_by_id(id)等价于find_element(By.ID, id)

  假设得到一段html源码如下:

  那么查找对应元素方法如下:

driver.find_element_by_id('p1')
driver.find_element_by_name('index')
driver.find_element_by_class_name('my_li')
driver.find_element_by_tag_name('h3')
driver.find_element_by_link_text('python教程')
driver.find_element_by_partial_link_text('python培')  # 模糊匹配文本
driver.find_element_by_xpath("//*[@id='p2']")
driver.find_element_by_css_selector('span.soutu-btn> input#kw')

	

  我们用天眼查这个垃圾网站来实际练习下元素查找。

selenium教程

Tips:不要怕、多坚持、多动手、付出必有回报。