我有一个页面,我正在使用C#中的selenium webdriver进行测试。我正在测试的页面是asp.net并使用GridView。在网格中,我需要通过部分id(CSS Selector)找到一个标签(在渲染时为span
),因为它可以在网格中的任何位置(从而更改其id),但也可以通过文本,因为不超过一条记录将包含“打开”一词,但其余部分将包含“已关闭”一词。我需要包含部分ID,因为“打开”可以单独出现在页面中的任何其他位置。当然,“打开”出现在网格中的行将更改其ID。
例如:
RecordID SomeData Status
1 Something1 Closed
2 Something2 Open //find this row's status label
2 Something3 Closed
到目前为止,我已经取得了一定的成功
driver.FindElements(By.XPath("//span[contains(text(),'Open')]"))
但是,我不想仅仅依赖文本,因为,例如,可能会有未来的帮助部分,或者“SomeData”列可能包含任何内容,包括“打开”
那么我如何通过css选择器FindElement
为部分ID AND包含文本“打开”?
答案 0 :(得分:1)
CSS选择器找不到包含文本,只有XPath会这样做。您可以使用下面的XPath,
//span[contains(@id,'somePartialId')][.='Open']
您没有指定要查找的部分ID,因此您必须自己填写。我将contains()
更改为包含文字的等号,因为您更有可能找到比使用contains()
讨价还价更多的内容。我建议你总是使用equals,如果它是包含文本的全部内容,并且如果它是部分文本,则只使用contains()
。