如何在Selenium/Python的CSS选择器中使用OR条件定位网站Logo?
解决CSS选择器多属性“或”匹配的问题
CSS选择器中实现或逻辑的正确方式是用逗号分隔多个独立选择器,你之前用的|或||是XPath语法,不适用于CSS选择器。
正确的选择器写法
要匹配任意标签中class/id/alt/name属性包含logo子串的元素,直接把各个属性选择器用逗号隔开即可:
driver.find_element(By.CSS_SELECTOR, "*[class*='logo'], *[id*='logo'], *[alt*='logo'], *[name*='logo']")
各部分说明
*:匹配任意HTML标签,符合你不确定logo所在标签的需求[class*='logo']:匹配class属性值包含logo子串的元素[id*='logo']:匹配id属性值包含logo子串的元素[alt*='logo']:匹配alt属性值包含logo子串的元素(通常用于img标签的logo)[name*='logo']:匹配name属性值包含logo子串的元素
注意事项
- 如果页面中有多个符合条件的元素,
find_element只会返回第一个匹配项。若需获取所有匹配结果,改用find_elements并做后续筛选(比如判断元素可见性、是否包含图片资源等) - 部分网站的logo可能使用自定义属性(如
data-*),可根据实际情况补充对应的选择器 - 若想提升匹配效率,可优先放置更精准的选择器(比如多数logo在img标签时,把
img[alt*='logo']放在前面)
内容的提问来源于stack exchange,提问作者Marcos Arreguín
相关产品推荐
相关产品推荐

