java - 无法单击 HTML 标签内的输入类型 = "radio"?

标签 java selenium selenium-webdriver cucumber-jvm

我遇到一个问题,无法使用 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() 方法。

但是包含此radiolabel 是可见的。这意味着您可以在此标签上使用 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/

相关文章:

java - 列出 Red5 可用的流

javascript - Selenium、Python、定期点击 JavaScript 链接?

c# - 使用 html agility xpath 查找 webdriver 元素

python - "find_element_by_xpath"和 "driver.find_elements(By.XPATH)"有什么区别

selenium - 如何在 Selenium 中单击 <a> 标签

java - 没有 Java 味道的多态性的正确实现

java - Spring Data JPA一对多关系不保存子表

java - 在 LinkedList 中实现 AddAtIndex 方法

java - Opera WebDriver 不会启动 Opera (Selenium 3.1.0)

selenium - 我需要帮助从相同的 HTML 代码编写 Xpath