【问题标题】:How to locate and click Radio Button through the Label using Selenium and Java如何使用 Selenium 和 Java 通过标签定位并单击单选按钮
【发布时间】:2019-08-24 00:13:40
【问题描述】:

我想取消选中网页上默认选中的单选按钮,但出现错误

“线程“主”中的异常 org.openqa.selenium.ElementNotVisibleException:元素不是 可交互”

有人可以帮我更正我正在尝试的代码吗?

WebElement travellerbutton = driver.findElement(By.xpath("//label[text()='Traveller']/preceding-sibling::input[@type='radio']"));
travellerbutton.click();

HTML:

<div class="radio">
    <input type="radio" name="tgselect" id="traveller" checked="">
    <label for="traveller">Traveller</label>
    <div class="check"></div>
</div>

【问题讨论】:

  • XML 代码是:
  • 单选按钮不是复选框:单击它们不会“取消选中”它们。
  • 更具体地说,你为什么不直接通过它的 id 获取元素,“traveller”?
  • 感谢@RoddyoftheFrozenPeas!我误解了带有复选框的单选按钮,我的代码以前不能使用 Id,但现在我再次尝试,它工作正常。谢谢!

标签: java selenium xpath css-selectors webdriver


【解决方案1】:

可能有多个单选按钮,您需要选择另一个。但如果您可以使用 JavaScript 取消选中单选按钮,请尝试以下代码:

((JavascriptExecutor)driver).executeScript("arguments[0].checked=false;", driver.findElement(By.id("traveller")));

【讨论】:

    【解决方案2】:

    到与&lt;label&gt; 关联的元素上的click(),文本为Traveller,您可以使用以下任一Locator Strategies

    • cssSelector:

      driver.findElement(By.cssSelector("label[for='Traveller']")).click();
      
    • xpath:

      driver.findElement(By.xpath("//label[@for='Traveller']")).click();
      

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 2022-01-07
      • 2014-06-24
      • 1970-01-01
      • 2016-02-12
      • 2018-12-27
      • 1970-01-01
      • 2016-11-14
      • 2021-03-29
      相关资源
      最近更新 更多