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']") #匹配字符串结尾