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: 2780619724@qq.com # 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()
2、 css模糊匹配
需注意的是 E:contains(‘xxx’) 内容中包含xxx的E元素 这种语法selenium不支持 ,
但是在 chrome 的F12 调试窗口中,能正确输出。

代码如下:
# -*- coding:utf-8 -*- # Author: Sky # Email: 2780619724@qq.com # 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()
执行,报错:


浙公网安备 33010602011771号