无法为活动元素找到正确的xpath

时间:2019-05-30 08:30:59

标签: selenium xpath-2.0

我无法在航班选择页面中找到票价包的活动xpath(仅在航班选择页面上显示的票价包)。 我已经尝试了所有,当我一直在尝试时,我得到的是webelement(票价捆绑)的总数,其中包括active和inactive。这导致我选择活动的xpath时遇到问题。当我运行循环时,当循环指出不活动时(web元素未指向用户界面中的任何feebundle,而是显示在开发人员工具中),该操作就失败了webelemet不显示在UI上。需要您的帮助/

xpath : 

<div class="colRadio">::before
<input type="radio" name="flightItineraryGroupId[0]_01" value="12" id="flightSelectGr_0_12" onclick="selectFareFamily(0, 1, 'AN'); fareFamiliesFlightSelection.selectFlight(this); reloadItinerarySummaryInfo(this, false)" class="" aria-labelledby="flightSelectGr_0_12Label  idFFTitleAN idFlightNumber2">

注意:     这里只有html以下是constant,其余的都是基于

的更改

选定的票价组合

 <div class="colRadio">::before

我尝试过 //div[@class="colRadio"] a并显示未在UI上显示的所有Web元素,包括无效的。

 For (i=1;i<=count,i++)driver.findElement(By.xpath("(//input[@type=\"radio\"])["+i+"]")).click();

预期:我希望xpath仅指向Ui中存在的Web元素 实际:当我运行循环时,单击未激活的UI中未显示的Web元素时,循环会失败

 For (i=1;i<=count,i++)driver.findElement(By.xpath("(//input[@type=\"radio\"])["+i+"]")).click();

注意:我只想要有效的xpath计数

1 个答案:

答案 0 :(得分:1)

  1. 将所有单选按钮放入ListWebElements中,例如:

    List<WebElement> allRadioButtons = driver.findElements(By.xpath("//input[@type='radio']"));
    

    提示:您可以在XPath queries中使用单引号'以获得更好的可读性,因为您不必在反引号"旁加上双引号\

  2. Filter out仅是那些当前可见的:

    List<WebElement> visibleRadioButtons = allRadioButtons
            .stream()
            .filter(WebElement::isDisplayed)
            .collect(Collectors.toList());
    
  3. 就是这样,现在visibleRadioButtons列表将仅包含当前显示并可以与其交互的那些按钮。

    enter image description here