029、css定位 03、模糊匹配
阿新 • • 發佈:2021-08-20
一、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:04View Code# 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()
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
執行,報錯: