我遇到一个问题,无法使用 id="same-supplier-no"
单击输入类型=“radio”:
<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>
在 Selenium 中,当我这样做时:
driver.findElement(By.id("same-supplier-no")).click();
它说“元素不可见”。 HTML 中以前的单选按钮上有标签,并且它们有标签的 ID(这个没有)。 我只需引用标签 ID 并单击它即可。但是这个没有标签的 ID,我想避免使用 xpath,但是,如果我别无选择,那么我只会通过 xpath/css 选择。
我也尝试过通过定位器名称,即 By.className("same-supplier");并使用 For 循环和 if 语句来存储输入 type=radio 元素,仍然不起作用。
问题是:为什么我不能点击输入 type = "radio",为什么对 Selenium 不可见?是因为它嵌套在标签内吗?如果是这样,有谁知道如何使用 id 单击它或仅访问该元素?
谢谢。
注意:我使用 Java 7 作为 Selenium。
最佳答案
通过聊天对话,我可以在您正在使用的网站上尝试一些东西。 radio
永远不会变得可见。因此,无法对其使用 click()
方法。
但是包含此radio
的label
是可见的。这意味着您可以在此标签上使用 click()
。
driver.findElement(By.cssSelector("label[for='same-supplier-no']")).click();
或者,如果您确实想使用radio
查找元素,您可以使用xpath
。
driver.findElement(By.xpath("//*[@id='same-supplier-no']/parent::label")).click();
关于java - 无法单击 HTML 标签内的输入类型 = "radio"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37985621/