您的位置: 网站首页> 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。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
selenium元素定位的8种方式及其变形写法文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200