Как выбрать между электронным билетом, мобильным билетом и билетом с собственной печатью, чтобы щелкнуть по нему - PullRequest
0 голосов
/ 11 января 2019

вот мой элемент:

<div id="ctl00_MasterContent_FareOptionsWebPart_FareOptionsFares_ctl123_FarePoint_Outbound28_1" class="FareOptionsFarePoint Outbound Single F28 J1 fakecheck filtered fakechecked" **data-fulfilment="ToD Kiosk SelfPrint MobileTicket eTicket"** radid="28_1" fare="28" data-selectable="1">£35.00</div>

Я не могу использовать другие теги, потому что все они динамические. Только я могу использовать, чтобы определить местонахождение данных.

1 - Если электронный билет доступен, его следует щелкнуть. 2 - Если мобильный билет доступен, то это должен быть клик.

Ниже мой локатор:

// * 1010 электронный билет *

private By _cel = By.xpath("//*[@data-fulfilment='ToD Kiosk SelfPrint MobileTicket eTicket']");

// мобильный билет, если электронный билет недоступен

private By _celM = By.xpath("//*[@data-fulfilment='ToD Kiosk SelfPrint MobileTicket']");

мой код ниже:

WebElement element = driver.findElement(_table3);

List <WebElement> row = element.findElements(_row);

System.out.println("Up to now I find  " + getTextFromElement(_row) + " element on page.");

System.out.println("No of Rows: " + row.size());

List <WebElement> cel = element.findElements(_cel);

System.out.println("Up to now I find  " + getTextFromElement(_cel) + " element on page.");

System.out.println("No of Cell: " + cel.size());

String SelfPrint = " SelfPrint ";



if (cel.contains(SelfPrint)) {

                clickOnElement(_cel);               
            }  
else
 {

                clickOnElement(_celM);

            }

У меня вопрос: как я могу выбрать между электронным, мобильным и самопечатным билетом или нет? пожалуйста, наведите меня на кодирование.

Спасибо

1 Ответ

0 голосов
/ 11 января 2019

Если будет доступен только один или другой параметр (ваш элемент _cel или ваш элемент _celm), вы можете просто создать один селектор By, который будет работать для обоих, и щелкнуть по нему.

Исходя из вашего примера XPath, это будет работать в обоих сценариях (при условии, что нет других элементов, содержащих атрибут выполнения данных ToD Kiosk SelfPrint MobileTicket).

private by _cel = By.XPath("//*[starts-with(@Data-Fulfilment, 'ToD Kiosk SelfPrint MobileTicket')]"); 

См. Xpath Cheatsheet

Поскольку оба элемента имеют атрибут Data-Fulfillment, начинающийся с «ToD Kiosk SelfPrint MobileTicket», это будет работать для обоих. Пока только один находится на странице в то время. Простое нажатие с этим селектором должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...