У меня есть проблема, когда я не могу нажать на тип входного = «радио» с помощью id="same-supplier-no"
:Невозможно нажать на тип ввода = «радио», который находится внутри метки HTML?
<label for="same-supplier-no" ng-class="{checked: !ctrl.energyModel.BillViewModel.SameSupplier}" class="">
<input type="radio" id="same-supplier-no" name="same-supplier" ng-model="ctrl.energyModel.BillViewModel.SameSupplier" ng-value="false" ng-change="ctrl.sameSupplierValueChanged(); ctrl.analyticsProvider.sendVirtualPageView('SameSupplierNo')" class="ng-pristine ng-untouched ng-valid" value="false">
<span></span>No
</label>
В Селен, когда я делаю:
driver.findElement(By.id("same-supplier-no")).click();
он говорит, что «элемент не виден» , В HTML есть предыдущие радиокнопки, на которых есть метки, и у них есть идентификаторы для ярлыков (этого нет). Я просто ссылаюсь на идентификатор метки и нажимаю на него, и это работает. Но у этого нет идентификатора для метки, и я хочу избежать использования xpath, однако, если у меня нет выбора, тогда я просто выберу через xpath/css.
Я также пробовал через имя локатора i.e. By.className («тот же поставщик»); и использование цикла For и оператора if для хранения типа input = radio element все равно не работает.
Вопрос: почему я не могу нажать тип ввода = «радио», почему в Selenium не видно? Это потому, что он вложен внутри метки? Если да, то кто-нибудь знает, как я могу щелкнуть его с помощью идентификатора или просто перейти к элементу?
спасибо.
Примечание: Я использую Java 7 для Selenium.
или driver.findElement (By.xpath ("// div [@ class = 'ответные метки]/label [2]")). Click(); –
Спасибо RemcoW, я знаю об этом. Я использовал метки для других радиокниг на странице. Однако, вопрос был в том, почему я не смог добраться до идентификатора radioButtons. Кажется, вы ответили на него. Исправьте меня, если я ошибаюсь: radioButtons не установлен на видимый, поэтому, когда на него вызывается метод click(), потому что элемент не установлен на видимый, он не может найти его, чтобы щелкнуть его, поэтому он не работает. Оба findElement, которые вы предоставили, работают. Я смог сделать это, используя xpath раньше, но второй findElement очень хорош. Можете ли вы объяснить «::», это ссылка на тег CSS? – DesignAndCode
@DesignAndCode Вы почти правы. Он может найти элемент, даже если он не отображается. Проблема в том, что селен не может щелкнуть по нему, если он не виден. Что касается '::', то это позволяет дать конкретное имя тега элемента, который вы ищете. В этом случае он будет искать любой элемент с идентификатором «тот же самый поставщик-нет», который имеет «метку» в качестве родителя. – RemcoW