Web Element Groovy isSelected () и выбрал, получая неправильный результат - PullRequest
1 голос
/ 20 мая 2019

Сценарий Я хочу собрать все выбранные записи в таблице. Ниже мой метод,

def getAlltheSelectedRecordId(String tableName){
        WebDriver driver = DriverFactory.getWebDriver()

        WebElement RefTable = driver.findElement(By.xpath("//*[@id='${tableName}']/tbody"))

        List<WebElement> RowsOf_RefTable = RefTable.findElements(By.tagName('tr'))
        int Totalcount = RowsOf_RefTable.size()
        for (int row : (1..Totalcount)) {
            boolean isChecked = driver.findElement(By.xpath("//*[@id='${tableName}']/tbody/tr[' + row + ']/td[2]/input")).isSelected()
            println isChecked
            boolean isChecked1 = driver.findElement(By.xpath("//*[@id='${tableName}']/tbody/tr[' + row + ']/td[2]/input")).selected
            println isChecked1
            if(isChecked){
                String selectedRecordID = driver.findElement(By.xpath("//*[@id='${tableName}']/tbody/tr[' + row + ']/td[5]/a")).getText()
                println selectedRecordID
            }           
        }
    }

Передача имени таблицы в качестве параметра и сбор всех выбранных записей в таблице. Но, к сожалению, всегда isChecked и isChecked1 возвращают false

Пожалуйста, покажите мне, в чем проблема

1 Ответ

1 голос
/ 21 мая 2019

Проблема заключается в том, что строки собраны вместе, и проблема уже видна с выделением синтаксиса здесь в SO:

By.xpath("//*[@id='${tableName}']/tbody/tr[' + row + ']/td[2]/input")

"...' + row + '..." не помещает значение rowвнутри строки - только этот точный «код».

Решение состоит в том, чтобы использовать правильные кавычки для окончания строки:

By.xpath("//*[@id='${tableName}']/tbody/tr[" + row + "]/td[2]/input")

Или, что еще лучше, придерживаться схемы, уже запущеннойв начале строки: используйте замену строки Groovys:

By.xpath("//*[@id='${tableName}']/tbody/tr[${row}]/td[2]/input")
...