Selenium XPath如何同时匹配Unseen与指定用户名的元素?
解决XPath多条件匹配问题
你之前写的XPath语法有误,正确的写法应该针对name属性同时做两次包含匹配,用and连接两个条件:
//XCUIElementTypeButton[contains(@name, 'Unseen') and contains(@name, 'githubstudent663')]
为什么之前的写法不生效:
- 你写的
@name=and是语法错误,@name=后面没有指定匹配值,直接跟and不符合XPath语法规则; - 你用了
contains(., 'githubstudent663'),这里的.是匹配元素的文本内容,但你的目标是匹配元素的name属性,所以应该替换成contains(@name, 'githubstudent663')。
如果需要更精准的匹配(比如确保Unseen在开头,或者用户名在末尾),也可以调整写法,比如:
//XCUIElementTypeButton[starts-with(@name, 'Unseen') and ends-with(@name, 'githubstudent663')]
不过要注意,ends-with是XPath 2.0的语法,如果你的测试框架只支持XPath 1.0,可能需要用substring替代,比如:
//XCUIElementTypeButton[starts-with(@name, 'Unseen') and substring(@name, string-length(@name)-string-length('githubstudent663')+1) = 'githubstudent663']
内容的提问来源于stack exchange,提问作者GitHub Student
相关产品推荐
相关产品推荐

