Селен, получающий строку из сетки

Я новичок в Selenium / Katalon, и у меня проблемы с моим скриптом. Я получаю сообщение «Невозможно найти элемент» для указанного мной элемента таблицы.

HTML

Я не уверен, что ссылаюсь на неправильный xpath / id, любая помощь будет отличной.

Сценарий:

      
WebDriver driver = DriverFactory.getWebDriver()

WebUI.waitForElementClickable(findTestObject('WPE2/input_.0000_ctl00ContentPlaceHolderWPERadGr_21b7ef'), 0)
//Locate EE ID
WebElement Table = driver.findElement(By.id("ctl00_ContentPlaceHolderWPE_RadGridWPE_GridData"))

List<WebElement> Rows = Table.findElements(By.className("rgRow"))

println('No. of rows: ' + Rows.size())

table: for (int i = 0; i < Rows.size(); i++) {
    List<WebElement> Cols = Rows.get(i).findElements(By.tagName('td'))

    for (int j = 0; j < Cols.size(); j++) {
        if (Cols.get(j).getText().equalsIgnoreCase(ExpectedValue)) {
            Cols.get(4).findElement(By.xpath('//*[@id="ctl00_ContentPlaceHolderWPE_RadGridWPE_ctl00__0"]/td[14]')).click()

            break
        }
    }
}

1 ответ

Как упоминалось в моем комментарии, этот вопрос можно улучшить, и я призываю вас все же ознакомиться с правильным форматированием. Вы также не можете указать, какой элемент вы ищете, поэтому читатель должен угадать его из вашего кода, что может ввести в заблуждение.

Бегло взглянув на код и снимок экрана, я предполагаю, что ваша проблема в том, что одинарная косая черта /в выражении XPath соответствует только прямым дочерним элементам. Так //*[@id="something"]/td будет соответствовать только td который находится непосредственно внутри элемента с соответствием id атрибут, который является div вне table.

Попробуйте либо

      //*[@id="something"]//td

с двойной косой чертой //, или что-то вроде

      //*[@id="something"]/table/tbody/tr/td
Другие вопросы по тегам