2011-01-14 178 views
0

我需要點擊一個表中的鏈接,其ID是動態生成的。我想單擊基於同一行其他列中文本的鏈接。嘗試下面的代碼,但不成功點擊硒動態鏈接

selenium.GetValue( 「//表[@ ID =表格ID]/tbody的/ TR [TD /一個/文本()= '測試']」)

還與試圖下面的代碼: Selenium.click(「xpath = id(TableID)/ tbody/tr [td/text()='Testing'] //輸入[@值=代碼,但只能通過指定靜態行ID

Dim NumOfRows As Integer = selenium.GetXpathCount("//table[@id='up']/tbody/tr") 
     'Dim index As Integer 
     Dim ReturnValue As Integer 
     Dim IsFound As Boolean = False 
     Console.WriteLine(NumOfRows) 

     For i As Integer = 1 To NumOfRows 
      Dim strColumnText As String = selenium.GetText("//table[@id='up']/tbody/tr[i]/td[1]") 
      'selenium.WaitForCondition(strt, 100000) 
      If (strColumnText = pord) Then 
       ReturnValue = i 
       IsFound = True 
       Exit For 
      End If 
     Next 

如果我指定精確的行會找到它的元素,但在廁所不能正常工作頁。請幫助

+0

對於作爲答案,你需要提供輸入樣本的XPath表達式。 – 2011-01-17 15:44:16

回答

1

如果該值是在一個表,你應該使用

selenium.getTable("tableName.0.1"); 

其中0是行,1是列(0基於指數兩者)

getTable將返回字符串如果成功:「確定,值」,因此您需要刪除OK,部分。

更新 添加到用戶extensions.js

Selenium.prototype.getTableRows = function(locator) { 
    /** 
    * Gets the number of rows in a table. 
    * 
    * @param locator element locator for table 
    * @return number of rows in the table, 0 if none 
    */ 

    var table = this.browserbot.findElement(locator); 
    return table.rows.length.toString(); 
}; 

硒RC

// Table Name in inputParams 

    String[] inputParams = { "tblTryggHuvudlantagare", }; 

       String y = proc.doCommand("getTableRows", inputParams); 
       String tmpString = y.replace("OK,", ""); 

       // Rows minus headings 


    int tableRows = Integer.valueOf(tmpString).intValue() - 1; 

     for (int i = 1; i < tableRows; i++) { 
    // Your logic here to see if you reached the right row and then click button on same row.. 
        } 
+0

這裏您指定了精確的行和列,但我必須根據值'testing'選擇一行,然後單擊另一列中同一行上的刪除按鈕。任何想法如何做到這一點.. – sam 2011-01-14 15:10:17