Игнорировать текст программы чтения с экрана в безмятежности

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

public static Target TransactionTypeOption = Target.the("Transaction Type options").located(By.xpath("//ipb-dropdown[@class='type-dropdown ']//li//div"));      
List<String> options = Text.of(TransactionTypeOption).viewedBy(actor).asList();

введите здесь описание изображения

Я использовал класс bootstrap Sr-only для текста чтения с экрана. Итак, я просто хотел прочитать первый контент, который называется «Все транзакции», но безмятежность возвращает мне «Пробелы всех транзакций, текущий выбор»


person Chandresh Mishra    schedule 11.10.2019    source источник


Ответы (1)


XPath, который вы используете, выбирает div, который также выбирает некоторый текст под div, который в данном случае , current selection. Я видел эту проблему раньше с Selenium, и единственным решением является обработка лишнего текста в вашем коде.

public static Target TransactionTypeOption = Target.the("Transaction Type options").located(By.xpath("//ipb-dropdown[@class='type-dropdown ']//li//div"));

string textToFilterOut = driver.findElement(By.xpath("//span[@class='sr-only']")).getText();      
List<String> options = Text.of(TransactionTypeOption).replace(textToFilterOut, "").viewedBy(actor).asList();
person Christine    schedule 11.10.2019
comment
Каждый отдельный div в списке имеет элемент sr-only. как с этим справиться? - person Chandresh Mishra; 11.10.2019
comment
@ChandreshMishra Находит ли .located(By.xpath("//ipb-dropdown[@class='type-dropdown ']//li//div")); один элемент div или несколько элементов div? - person Christine; 11.10.2019
comment
он находит несколько. Это раскрывающееся значение. - person Chandresh Mishra; 13.10.2019