您的位置: 网站首页> selenium爬虫> 当前文章

selenium元素定位的8种方式及其变形写法

老董-我爱我家房产SEO2020-09-14173围观,123赞

  所谓元素定位就是在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选择器

  1、如果是查找单个元素,这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()

  2、如果查找是多个元素,find_elements_by_xxx找的是所有符合条件的标签,这8种定位方式在Python selenium中所对应的方法为(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()

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

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

  官方文档案例如下

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')

  假设得到一段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')

	

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

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会

文章评论

    selenium元素定位的8种方式及其变形写法文章写得不错,值得赞赏

站点信息

  • 网站程序:Laravel
  • 客服微信:a772483200