2016-02-26 29 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個示例,您可以如何實現在所需行中單擊''標籤。 –

相關問題