Нажатие на динамическую ссылку в селене - PullRequest
0 голосов
/ 14 января 2011

Мне нужно нажать на ссылку в таблице, идентификатор которой генерируется динамически.Я хочу нажать на ссылку на основе текста в каком-то другом столбце в той же строке.Пробовал следующий код, но безуспешно

selenium.GetValue ("// table [@ id = TableID] / tbody / tr [td / a / text () = 'Testing']")

Также пытаемся использовать следующий код Selenium.click ("xpath = id (TableID) / tbody / tr [td / text () = 'Testing'] // input [@ value = 'Delete']")

Пробовал следующий код, но работает только путем указания статического идентификатора строки

 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

Если я укажу точную строку, он найдет элемент, но не работает в цикле.Пожалуйста, помогите

1 Ответ

1 голос
/ 14 января 2011

Если значение находится в таблице, вы должны использовать

selenium.getTable("tableName.0.1");

Где 0 - строка, а 1 - для столбца (для каждого индекса на основе 0)

getTable вернетстрока в случае успеха: «ОК, значение», поэтому вам нужно удалить ОК, деталь.

Обновить Добавить в user-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..
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...