1.css 结合基本属性定位(id,class,标签)
语法
driver.find_element(By.CSS_SELECTOR, '#id值') #css+id定位
driver.find_element(By.CSS_SELECTOR,'.class值') #css+class定位
driver.find_element(By.CSS_SELECTOR,'标签名') #css+标签定位参数说明
#:代表 id
.:代表 class
代码示例
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome(service=Service('/usr/local/bin/chromedriver'))
driver.get('https://baidu.com')
el1 = driver.find_element(By.CSS_SELECTOR, '#kw') #css+id定位
print(el1)
el2 = driver.find_element(By.CSS_SELECTOR,'.s_ipt') #css+class定位
print(el2)
el3 = driver.find_element(By.CSS_SELECTOR,'form') #css+标签定位
print(el3)
time.sleep(100)2.css 结合其他属性定位
语法
driver.find_element(By.CSS_SELECTOR, '[属性名=属性值]') #css+其他属性
driver.find_element(By.CSS_SELECTOR, '[属性名1=属性值1][属性名2=属性值]2') #css+多个其他属性代码示例

from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome(service=Service('/usr/local/bin/chromedriver'))
driver.get('https://baidu.com')
el1 = driver.find_element(By.CSS_SELECTOR, "[name='wd']") #css+其他属性
print(el1)
dl2 = driver.find_element(By.CSS_SELECTOR, "[name='wd'][id='kw']") #css+多个其他属性
print(dl2)
time.sleep(100)3.css 标签结合其他属性定位
语法
driver.find_element(By.CSS_SELECTOR,'标签名#id值') #标签+id属性定位
driver.find_element(By.CSS_SELECTOR,'标签名.class值') #标签+class属性定位
driver.find_element(By.CSS_SELECTOR,'标签名[属性名=属性值]') #标签+其他属性定位代码示例

el1 = driver.find_element(By.CSS_SELECTOR,'input#kw') #标签+id属性定位el2 = driver.find_element(By.CSS_SELECTOR,'input.s_ipt') #标签+class属性定位el3 = driver.find_element(By.CSS_SELECTOR,"input[name='wd']") #标签+其他属性定位4.css 层级定位
语法
el1 = driver.find_element(By.CSS_SELECTOR,"标签 1>标签 2")参数说明
标签 1 > 标签 2 : 表示父级定位到子级
代码示例:

el1 = driver.find_element(By.CSS_SELECTOR, "form[id='form']>span>input")5.css 索引定位
语法:
el1 = driver.find_element(By.CSS_SELECTOR, "标签:nth-child(n)") #正着数第n个标签
el2 = driver.find_element(By.CSS_SELECTOR, "标签:nth-last-child(n)") #倒着数第n个标签注意:与python列表索引不同,此处标签索引从 1 开始
代码示例:


el1 = driver.find_element(By.CSS_SELECTOR, "div[id='s-top-left']>a:nth-child(3)")
el2 = driver.find_element(By.CSS_SELECTOR, "div[id='s-top-left']>a:nth-last-child(3)") #倒着数第n个标签6.css 模糊匹配
模糊匹配适合属性值太长,想通过属性值的部分来匹配元素

语法
el1 = driver.find_element(By.CSS_SELECTOR, "[属性名 ~= '部分属性值']") #1.属性值由多个空格隔开,匹配其中一个值的方法
el2 = driver.find_element(By.CSS_SELECTOR, "[属性名^='属性值开头']") #匹配字符串开头
el3 = driver.find_element(By.CSS_SELECTOR, "[属性名$='属性值结尾']") #匹配字符串结尾代码示例:
el1 = driver.find_element(By.CSS_SELECTOR, "input[class ~= 's_btn']") #1.属性值由多个空格隔开,匹配其中一个值的方法
el2 = driver.find_element(By.CSS_SELECTOR, "input[class^='bg']") #匹配字符串开头
el3 = driver.find_element(By.CSS_SELECTOR, "input[class$='s_btn']") #匹配字符串结尾