🐱🏍🐱👤🐱👓🏍🐱🚀总结一下元素定位方式,因为项目中会用到,爬虫也会用到,也是为了方便自己和方便后续的同事,总结一下。😄🤞😊😘
from selenium import webdriver
from selenium.webdriver.common.by import By
# 单个查找
find_element_by_id(locator)
find_element(By.ID, locator)
# 多个查找
find_elements_by_id(locator)
find_elements(By.ID, locator)
find_element_by_name(locator)
find_element(By.NAME, locator)
find_element_by_class_name(locator)
find_element(By.CLASS_NAME, locator)
find_element_by_tag_name(locator)
find_element(By.TAG_NAME, locator)
find_element_by_partial_link_text(locator)
find_element(By.PARTIAL_LINK_TEXT, locator)
find_element_by_link_text(locator)
find_element(By.LINK_TEXT, locator)
# 单个元素定位
find_element_by_xpath(locator)
find_element(By.XPATH, locator)
# 多个元素定位
find_elements_by_xpath(locator)
find_elements(By.XPATH, locator)
# 单个元素定位
find_element_by_css_selector(locator)
find_element(By.CSS_SELECTOR, locator)
# 多个元素定位
find_elements_by_css_selector(locator)
find_elements(By.CSS_SELECTOR, locator)
find_element_by_xpath('/html/body/div[4]/div[1]/a')
find_element(By.XPATH, '/html/body/div[4]/div[1]/a')
find_element_by_xpath('//form/span')
find_element(By.XPATH, '//form/span')
find_element_by_xpath("//input[@name='pwd']")
find_element(By.XPATH, "//input[@name='pwd']")
# starts-with:
find_element_by_xpath("//label[starts-with(@class,'btn')]")
find_element(By.XPATH, "//label[starts-with(@class,'btn')]")
# contains:
find_element_by_xpath("//label[contains(@class,'btn')]")
find_element(By.XPATH, "//label[contains(@class,'btn')]")
find_element_by_xpath("//span[text()='下一步']")
find_element(By.XPATH, "//span[text()='下一步']")
属性 | 解释 | 备注 |
---|---|---|
parent | 表示当前节点的父节点元素 | 用的相对多一些 |
ancestor | 表示当前节点的祖先节点元素 | |
child | 表示当前节点的子元素 | 用的相对多一些 |
self | 表示当前节点的自身元素 | |
ancestor-or-self | 表示当前节点的及它的祖先节点元素 | |
descendant-or-self | 表示当前节点的及它们的后代元素 | |
following-sibling | 表示当前节点的后序所有兄弟节点元素 | |
preceding-sibling | 表示当前节点的前面所有兄弟节点元素 | |
following | 表示当前节点的后序所有元素 | |
preceding | 表示当前节点的所有元素 |
xpath | 解释 | 备注 |
---|---|---|
//div[last()] | 显示文章中最后一个div | |
//div[last()-1] | 显示文章中倒数第二个div | |
//div[last()-2] | 显示文章中倒数第三个div | |
//div[position()❤️]显示前俩个div |
# 代表id是kw
css=#kw
# 代表class等于uname
css=.uname
其实吧xpath的所有定位方式掌握了,基本上做web自动化元素定位这块就问题不大了。
除了各边动态的或者不太好处理的可以结合css等别的定位方式一起解决.