Selenium中CSS通配选择器多条件匹配失效问题
Selenium多条件CSS选择器匹配问题解答
问题核心
你当前编写的CSS选择器写法错误,这是运行后返回空元素列表的直接原因。
错误点说明
标准CSS选择器语法中不存在and逻辑关键字,你写的[id^='cell_'] and [id*='button']无法被浏览器内置的CSS选择器引擎识别,自然匹配不到任何元素。
CSS选择器实现多条件逻辑与(同时满足多个规则)的方式,是把多个匹配规则直接连续书写,不需要加任何连接词。
正确实现代码
针对你需要匹配id以cell_开头、且id包含button关键词的元素(对应id格式cell_[number]-button_[number]),正确的Java代码如下:
var elements = Util.driver.findElements(By.cssSelector("[id^='cell_'][id*='button']"));
规则拆解
[id^='cell_']:匹配id属性值以cell_字符串开头的所有元素[id*='button']:匹配id属性值中包含button字符串的所有元素- 两个属性选择器直接拼接,代表元素必须同时满足以上两个规则,完全匹配你的目标元素特征。
如果需要更严格匹配cell_数字-button_数字的固定格式,避免误匹配其他同前缀但格式不符的元素,可以使用精度更高的选择器:
// 严格匹配cell_x-button_x格式id的元素(x为任意数字) var elements = Util.driver.findElements(By.cssSelector("[id^='cell_'][id*='-button_']"));
内容的提问来源于stack exchange,提问作者Hrach
相关产品推荐
相关产品推荐

