1. 程式人生 > 其它 >029、css定位 03、模糊匹配

029、css定位 03、模糊匹配

一、css模糊匹配

1、 屬性匹配

E[att^="val"]   選擇 att 屬性值以 "val" 開頭的所有元素
E[att$="val"]   選擇 att 屬性值以 "val"結尾的所有元素
E[att*="val"]   選擇 att 屬性值中包含子串 "val"的所有元素

比如:'a[class*="index-"]' ,意思是:class屬性包含"index-" 的所有 a 標籤元素 ;

程式碼如下:

# -*- coding:utf-8 -*-
# Author:  Sky
# Email:   [email protected]
# Time:    2021/8/20 17:04
# Project: day01 # Module: ch_03.py # Environment: Python3.8.6 , Selenium3 環境 ( 3.141.0 版本) # Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本) from selenium import webdriver import time driver = webdriver.Chrome() driver.get("http://49.235.92.12:8200/users/login/") driver.maximize_window()
# <a class="index-font" href="/">回到首頁</a> # class^ class屬性以xxx開頭 的a # driver.find_element_by_css_selector('a[class^="index-l"]').click() # # class$ class屬性以xxx結尾 的a # driver.find_element_by_css_selector('a[class$="-font"]').click() # # class* class屬性包含xxx 的a driver.find_element_by_css_selector('
a[class*="index-"]').click() # print(driver.find_element_by_css_selector('a[class*="index-"]')) # 如果已經開啟了一個driver,再列印時報錯: # selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"a[class*="index-"]"} # (Session info: chrome=92.0.4515.131) # 列印結果:<selenium.webdriver.remote.webelement.WebElement (session="593da7db4a0ef136ca779d0847de0488", element="3a7b4fde-cf76-48fa-a0fb-a159a6c20d52")> time.sleep(3) driver.quit()
View Code

2、css模糊匹配

  需注意的是 E:contains(‘xxx’) 內容中包含xxx的E元素 這種語法selenium不支援 ,

  但是在 chrome 的F12 除錯視窗中,能正確輸出。

 

程式碼如下:

# -*- coding:utf-8 -*-
# Author:  Sky
# Email:   [email protected]
# Time:    2021/8/20 17:04
# Project: day01
# Module:  ch_03.py
# Environment: Python3.8.6 , Selenium3 環境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://49.235.92.12:8200/users/login/")
driver.maximize_window()
time.sleep(3)

driver.find_element_by_css_selector("a:contains('回到首頁')").click()
# selenium 不支援這種模糊匹配,報錯:Message: invalid selector: An invalid or illegal selector was specified
# 但是在 chrome 的F12 除錯視窗中,能正確輸出。

time.sleep(3)
driver.quit()
View Code

執行,報錯: