尝试使用CSS来定位表中的行

时间:2014-08-21 14:48:49

标签: selenium webdriver

我试图找到一种方法,使用CSS来定位表中的特定单元格,以验证该行是否存在并验证行的单元格内容。

我能够使用Selenium IDE创建类似

的查询
css=td:contains('BAD')

'BAD'是一个唯一的客户端代码,因此在此位置验证客户端是否存在该行。

但是,当我将其导出到C#/ nunit / Webdriver时,测试不起作用。

是否有使用我可以使用的CSS的替代方法?

一些表tata的html如下;

 <tr class="ng-scope" ng-repeat="client in clients">
    <td class="text-left ng-binding">Bart's Ad</td>
     <td class="text-left ng-binding">BAD</td>
     <td class="text-left">
     <span class="ng-scope" ng-repeat="group in client.SecurityGroups">
     <a class="label label-info ng-binding" href="#/SecurityGroup/MemberClients   /Assistants"> Assistants </a>
     </span>
     <span class="ng-scope" ng-repeat="group in client.SecurityGroups">
     <a class="label label-info ng-binding" href="#/SecurityGroup/MemberClients/Managers"> Managers </a>
     </span>

[编辑] 我也用过;

table tr:nth-child(2) td:nth-child(1)

哪个会找到我的单元格,但它不如使用包含客户端特定属性的查询验证客户端的行一样好。

祝你好运 AlmightyJoygasm

1 个答案:

答案 0 :(得分:0)

您可以改用xpath:

driver.FindElement(By.XPath("//td[contains(text(), 'BAD')]"));

对于您要尝试匹配的内容,此xpath应该有效:

By.XPath("//td[contains(text(), 'Smith')][1]")

您的xpath找到第一个<td>,然后尝试匹配文字Smith

您要做的是找到包含文本<td>的{​​{1}}元素,然后返回第一个实例。