我无法在航班选择页面中找到票价包的活动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计数
答案 0 :(得分:1)
将所有单选按钮放入List的WebElements中,例如:
List<WebElement> allRadioButtons = driver.findElements(By.xpath("//input[@type='radio']"));
提示:您可以在XPath queries中使用单引号'
以获得更好的可读性,因为您不必在反引号"
旁加上双引号\
Filter out仅是那些当前可见的:
List<WebElement> visibleRadioButtons = allRadioButtons
.stream()
.filter(WebElement::isDisplayed)
.collect(Collectors.toList());
就是这样,现在visibleRadioButtons
列表将仅包含当前显示并可以与其交互的那些按钮。