下面这段代码运行没有错误:
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
options = ChromeOptions()
options.add_argument("--headless")
selectors = [
'img[alt=Google]',
'img[alt="Google"]'
]
with webdriver.Chrome(options=options) as driver:
driver.get("https://www.google.com")
wait = WebDriverWait(driver, 5)
for selector in selectors:
t = By.CSS_SELECTOR, selector
wait.until(EC.presence_of_element_located(t))
注意 CSS 选择器的两种形式略有不同。
我一直明白,明确的语法是:
'img[alt="Google"]'
注意双引号。
我确定在 selenium 4.22.0 (Python 3.12.4) 中以下语法也适用:
'img[alt=Google]'
不是缺少双引号。
所以我的问题是省略双引号是否符合CSS标准,或者这是selenium特有的东西?
感谢@David(他找到了我无法理解的文档),如果属性值包含空格或特殊字符,则似乎必须用引号引起来。请参阅此处