我想知道我是否可以通过css-locators通过精确文本匹配元素(总体目标是将其用作Selenium
的定位器)。我知道contains
方法
例如:
<div><div>S - Subscriber</div></div>
我可以通过css=div:contains('Subscriber')
或css=div:contains('S - Subscriber')
检索它,但我需要完全匹配。我试过了css=div:contains('^S - Subscriber$')
,找不到这个元素。
还有一点:
当我们使用xpath
时,我们可以通过检索带有text()
函数的文本来假定给定文本是精确元素(例如//div[text()='S - Subscriber']
会将我们指向孩子div,只要{ {1}}会将我们指向父div,如果我没有搞砸了),那么css中的等价物是否等同于//div[contains(., 'S - Subscriber')]
?我的意思是只指向一个元素,没有父div。
提前致谢!
答案 0 :(得分:3)
由于您正在使用硒,我会选择使用Xpath。您可以通过以下方式获得所需的元素:browser.find_element_by_xpath('//div[text()="S - Subscriber"]')
遗憾的是,您不能将css选择器用于您尝试做的事情。
答案 1 :(得分:0)
您可以尝试使用正则表达式进行精确匹配。
var r = /^a$/;
css=a:contains((r.test('Text')) ? 'Text' : '');