按部分ID和文本查找元素?

时间:2017-07-10 16:20:29

标签: c# asp.net selenium-webdriver

我有一个页面,我正在使用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包含文本“打开”?

1 个答案:

答案 0 :(得分:1)

CSS选择器找不到包含文本,只有XPath会这样做。您可以使用下面的XPath,

//span[contains(@id,'somePartialId')][.='Open']

您没有指定要查找的部分ID,因此您必须自己填写。我将contains()更改为包含文字的等号,因为您更有可能找到比使用contains()讨价还价更多的内容。我建议你总是使用equals,如果它是包含文本的全部内容,并且如果它是部分文本,则只使用contains()