не могу найти правильный xpath для активного элемента - PullRequest
0 голосов
/ 30 мая 2019

Я не могу найти активный xpath (пакет тарифов, который отображается только на странице выбора рейса) для пакета тарифов на странице выбора рейса. Я попробовал все, когда я пытался, я получаю общее количество webelement (тарифный пакет), который включен как активный, так и неактивный. это вызывает у меня проблему с выбором активного xpath. Когда я запускаю цикл, в тот момент, когда цикл указывает на неактивность (webelement, который не указывает на какую-либо переменную в пользовательском интерфейсе, но показан в инструменте разработчика), он терпит неудачу, так как webelemet не отображается в пользовательском интерфейсе. нужна твоя помощь /

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 являются постоянными, а все остальные изменения на основе

выбранный тарифный пакет

 <div class="colRadio">::before

я пытался //div[@class="colRadio"] a показывает все элементы, включая неактивные, которые не отображаются в пользовательском интерфейсе.

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

Ожидается: я хочу, чтобы xpath указывал только на веб-элемент в Ui Фактически: когда я выполняю цикл, цикл выходит из строя, когда он нажимает на веб-элемент, который не отображается в пользовательском интерфейсе, который неактивен

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

Примечание: я хочу только счетчик активных xpath

1 Ответ

1 голос
/ 30 мая 2019
  1. Получить все переключатели в Список из WebElements , например:

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

    подсказка: вы можете использовать одинарные кавычки ' в своих запросах XPath для лучшей читабельности, поскольку вам не придется избегать двойных кавычек " с обратной косой чертой \

  2. Отфильтровать только те, которые в данный момент видны:

    List<WebElement> visibleRadioButtons = allRadioButtons
            .stream()
            .filter(WebElement::isDisplayed)
            .collect(Collectors.toList());
    
  3. Вот и все, теперь список visibleRadioButtons будет содержать только те кнопки, которые отображаются в данный момент и с которыми можно взаимодействовать.

    enter image description here

...