элемент не активен для параметров радио - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь найти все элементы, используя find_element_by_xpath. В приведенных ниже веб-элементах я ищу эти три элемента отдельно:

1.  <label for="hw-log-mode-none" class="ng-binding">None</label>
2.  <label for="hw-log-mode-session" class="ng-binding">Per-Session</label>
3.  <label for="hw-log-mode-mapping" class="ng-binding">Per-Mapping</label>

        <div class="field ng-scope" ng-if="!isTransparentMode &amp;&amp; showNatPool &amp;&amp; !policy.isIPv6" ng-show="policy.action == 'accept' &amp;&amp; policy.nat == 'enable'">
            <label class="ng-binding">Hardware Logging Mode</label>
            <div>
                <div class="radio-group">
                <input type="radio" id="hw-log-mode-none" value="none" ng-model="policy['hw-logging-mode']" class="ng-pristine ng-untouched ng-valid" name="670">
                    <label for="hw-log-mode-none" class="ng-binding">None</label>
                <input type="radio" id="hw-log-mode-session" value="session" ng-model="policy['hw-logging-mode']" class="ng-valid ng-dirty ng-touched" name="671" style="">
                    <label for="hw-log-mode-session" class="ng-binding">Per-Session</label>
                <input type="radio" id="hw-log-mode-mapping" value="mapping" ng-model="policy['hw-logging-mode']" class="ng-valid ng-dirty ng-touched ng-valid-parse" name="672" style="">
                    <label for="hw-log-mode-mapping" class="ng-binding">Per-Mapping</label>
                </div>
            </div>
        </div>

Я могу найти элемент # 1 и # 2 в приведенном выше списке. Но когда я пытаюсь найти элемент # 3 , используя тот же способ:

elem = driver.find_element_by_xpath("//label[@for='hw-log-mode-mapping']")

, я получаю эту ошибку:

Сообщение: элемент перехвачен: элемент... не активируется в точке (707, 508). Другой элемент получит щелчок: ... (Информация о сеансе: chrome = 77.0.3865.90) ​​

1 Ответ

0 голосов
/ 02 октября 2019

Попробуйте это, получите список всех элементов, поскольку они имеют одинаковые имена классов, как показано ниже:

List<WebElement> elements = driver.findElements(By.xpath(".//label[@class='ng-binding']"));

Теперь создайте метод для выбора параметров радио следующим образом:

public void selectRadioOption(String option){
    if(option.equals("None"))
          elements.get(0).click();
    else if(option.equals("Per-Session"))
          elements.get(1).click();
    else if(option.equals("Per-Mapping"))
          elements.get(2).click();
}

Вызовите этот метод, передайте опцию, какую хотите выбрать. Надеюсь, это работает для вас. Вы не должны найти 3 разных xpath, если вы можете работать с ним.

...