2016-02-26 51 views
0

对不起,我对c#和硒编程还是一个新手。使用Selenium WebDriver c检索表格数据#

我正在自动执行包含动态表的应用程序。该表由4列组成,3列包含数据,1列包含每行2个按钮。

在编写我的Selenium测试时,我想传递一个'Username'字符串,然后有一些智能代码从表中检索数据并匹配传入的字符串。一旦找到,我希望它穿过该行并选择该行上的2个按钮中的任一个。

<table> 
<tbody> 
    <tr> 
    <td>UserName_Data</td> 
    <td>Email_data</td> 
    <td>IsDeactivated</> 
    <td>[blank]</td> 
     <a class="xxx" title="Edit User Account" href="xxx"/> 
     <a class="xxx" title="Deactivate User" href="xxx"/> 
    </td> 
    </tr> 
    <tr> 
    <td>UserName_Data</td> 
    <td>Email_data</td> 
    <td>IsDeactivated</> 
    <td>[blank]</td> 
     <a class="xxx" title="Edit User Account" href="xxx"/> 
     <a class="xxx" title="Deactivate User" href="xxx"/> 
    </td> 
    </tr> 
    <tr> 
    <td>UserName_Data</td> 
    <td>Email_data</td> 
    <td>IsDeactivated</> 
    <td>[blank]</td> 
     <a class="xxx" title="Edit User Account" href="xxx"/> 
     <a class="xxx" title="Deactivate User" href="xxx"/> 
    </td> 
    </tr> 
</tbody> 
</table> 


[TestMethod] 
     public void NavigateToEditManageUsers() 
     { 
      ManageUsersPage.GoTo(); 
      ManageUsersPage.EditUser(Bill); 
     } 

回答

0

我删除从您的示例[空白] TD我的回答的目的,因为你描述的<a>标签在第4列是:

<table> 
<tbody> 
<tr> 
    <td>UserName_Data</td> 
    <td>Email_data</td> 
    <td>IsDeactivated</td> 
    <td> 
     <a class="xxx" title="Edit User Account" href="xxx"/> 
     <a class="xxx" title="Deactivate User" href="xxx"/> 
    </td> 
</tr> 
<tr> 
    <td>Bill</td> 
    <td>Email_data</td> 
    <td>IsDeactivated</td> 
    <td> 
     <a class="xxx" title="Edit User Account" href="xxx"/> 
     <a class="xxx" title="Deactivate User" href="xxx"/> 
    </td> 
</tr> 
<tr> 
    <td>UserName_Data</td> 
    <td>Email_data</td> 
    <td>IsDeactivated</td> 
    <td> 
     <a class="xxx" title="Edit User Account" href="xxx"/> 
     <a class="xxx" title="Deactivate User" href="xxx"/> 
    </td> 
</tr> 
</tbody> 
</table> 

下面将找到包含第二行用户名“比尔”,然后拿到第一<a>标签:

//table/tbody/tr[td[1] = "Bill"]/td[4]/a 

这是在C#中的实现:

public class ManageUsersPage 
{ 
    public static void GoTo() 
    { 
     // Loads page 
    } 

    public static void EditUserAccount(string username) 
    { 
     Driver.FindElement(By.XPath("//table/tbody/tr[td[1] = '" + username + "']/td[4]/a[1]")).Click(); 
    } 

    public static void DeactivateUser(string username) 
    { 
     Driver.FindElement(By.XPath("//table/tbody/tr[td[1] = '" + username + "']/td[4]/a[2]")).Click(); 
    } 

} 

[TestMethod] 
public void NavigateToEditManageUsers() 
{ 
    ManageUsersPage.GoTo(); 
    ManageUsersPage.EditUserAccount("Bill"); 
} 
+0

感谢本,因为这个表是动态的,法案很可能出现向下的表因其他用户添加,我怎么能得到这个场景,如果我通过的“法案” – Dulku

+0

一个String工作嘿嘿杜尔库,我不完全确定我理解你的问题。我的答案中的XPath将返回正确的行(用户名为Bill的行),即使该行是表中的最后一行。我已经在C#中添加了2个示例,您可以如何实现在所需行中单击''标签。 –

相关问题