Eclipse-Selenium-Извлечь значение из таблицы

Я относительно новичок в автоматизации тестирования и, в частности, в Selenium. Я использую веб-драйвер Selenium, Eclipse. Я не могу извлечь значение из столбца/строки:

Eclipse-Selenium-Извлечь значение из таблицы

Я использую следующий код:

Чтобы определить веб-элемент:

    @FindBy(xpath = "//*[@id=\"pendingreferrals\"]/tbody/tr")
    @CacheLookup
    private List<WebElement> SignedReferralsTable;

Метод:

    public void PickReferralFromSignedReferralsTable() throws InterruptedException 
    {ExplicitWait.until(ExpectedConditions.visibilityOfAllElements(SignedReferralsTable));
    Thread.sleep(1000);
    Integer rowcount = SignedReferralsTable.size();
    Integer rownumber = ThreadLocalRandom.current().nextInt(1, rowcount + 1);
    Thread.sleep(5000);
    **String WebRefID = GlobalVariables._browser.currentDriver.findElement
    (By.cssSelector("#pendingreferrals > tbody > tr:nth-child(" + rownumber + ") > td:nth- 
     child(1) > a")).getText().toString();**             
               actions.moveToElement(GlobalVariables._browser.currentDriver.findElement(By.cssSelector("#pendingreferrals > tbody > tr:nth-child(" + rownumber + ") > td:nth-child(9) > a"))).click().perform();
Thread.sleep(5000); 
}

В моей строке кода я получаю сообщение об ошибке:

    String WebRefID = GlobalVariables._browser.currentDriver.findElement
    (By.cssSelector("#pendingreferrals > tbody > tr:nth-child(" + rownumber + ") > td:nth- 
    child(1) > a")).getText().toString(); 

создает ошибку: java.lang.NullPointerException: невозможно вызвать "String.length()" потому что "projAbb" равно нулю

Eclipse-Selenium-Извлечь значение из таблицы

скриншот кода:

Eclipse-Selenium-Извлечь значение из таблицы

Чтобы было понятно: мой код определяет количество записей (строк) в таблице (количество строк в веб-элементе SignedReferralsTable), затем выбирает случайную строку с учетом общего количества строк (см. переменную rownumber). Затем он щелкает ссылку «Просмотр», чтобы перейти на веб-страницу со случайными сведениями о записи. Однако перед навигацией я хотел бы сохранить идентификационный номер этой конкретной записи, номер которой был случайным образом возвращен в отдельной строковой переменной WebRefID. Это не работает. Пробовал по разному:

    String WebRefID = GlobalVariables._browser.currentDriver.
    findElement(By.cssSelector("#pendingreferrals > tbody > tr:nth-child(" + rownumber + ") > 
    td:nth-child(1) > a")).getText().toString();

    String WebRefID = GlobalVariables._browser.currentDriver.
    findElement(By.cssSelector("#pendingreferrals > tbody > tr:nth-child(" + rownumber + ") > 
    td:nth-child(1) > a")).getText();

    String WebRefID = GlobalVariables._browser.currentDriver.
    findElement(By.cssSelector("#pendingreferrals > tbody > tr:nth-child(" + rownumber + ") > 
    td:nth-child(1) > a")).toString();

Ничего не сработало. Мне нужно сохранить значение, чтобы утверждать (я планирую использовать Assert.assertTrue()), перешел ли я на страницу именно этого конкретного заказа/реферала. Может ли кто-нибудь помочь мне.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я действительно нашел причину, по которой cssSelect не может идентифицировать/распознать элемент. Моя ошибка заключалась в том, что я поставил «> a» в конце оператора:

    String WebRefID = GlobalVariables._browser.currentDriver.
    findElement(By.cssSelector("#pendingreferrals > tbody > tr:nth-child(" + 
    rownumber + ") > td:nth-child(1) > a")).getText().toString();

После удаления ">a" все заработало.

Приносим извинения за доставленные неудобства.

Другие вопросы по теме