如何在电子票,手机票和自印票之间进行选择以单击它

时间:2019-01-11 11:37:33

标签: java selenium selenium-webdriver

这是我的元素:

<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-如果有移动票证,则应该单击一下。

下面是我的定位器:

//标签

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 :(得分:0)

如果只有一个或另一个选项(您的_cel元素或_celm元素)可用,则可以只创建一个同时适用于这两个选项的By选择器,然后单击它。

根据您的示例XPath,这在两种情况下均适用(前提是没有其他元素包含“ ToD Kiosk SelfPrint MobileTicket”数据实现属性)。

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

请参见Xpath Cheatsheet

由于两个元素都具有以“ ToD Kiosk SelfPrint MobileTicket”开头的Data-Fulfilment属性,因此这两个元素均适用。只要当时页面上只有一个即可。只需使用此选择器单击即可。