使用css选择器在确切元素内按精确文本查找元素

时间:2014-09-17 11:43:46

标签: selenium xpath selenium-webdriver css-selectors

我想知道我是否可以通过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。

提前致谢!

2 个答案:

答案 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' : '');