【问题标题】:In Selenium with Java, how to uncheck some checkboxes?在 Selenium with Java 中,如何取消选中某些复选框?
【发布时间】:2018-10-20 12:13:54
【问题描述】:

如何使用 Java 在 Selenium 中编写代码以取消选中这些复选框之一? 在原始搜索中显示选中但我想取消选中一个或两个或所有三个以查看更少的结果,这是显示的搜索:

按提供商过滤结果:[x]Facebook (25911)、[x]Hotmail (7651)、[x]Yahoo (11)

感谢您的帮助:)

【问题讨论】:

  • 顺便说一句,这是我尝试的两种方法,但没有一种方法有效:driver.findElement(By.xpath("//input[@id='custom-checkbox-6']")) 。点击(); driver.findElement(By.cssSelector("input[id='custom-checkbox-6']")).click();
  • 也添加相关的html
  • 获取您希望收藏的所有元素。迭代它,然后通过特定的用例,选中/取消选中你想要的(带参数)。 driver.findElements() 会帮助你。我认为您必须在步骤上将其分开,例如,获取所有目标元素,获得所需(通过检查/取消检查),断言状态。

标签: java selenium-webdriver checkbox


【解决方案1】:

我知道这是一个老问题,但我最近自己遇到了这个问题。我不需要提前知道该框是否已选中,我只是想强制取消选中它。我提出的解决方案(在 Node.js 中使用 Javascript)类似于我用来调用 setAttribute 的解决方案:

let element = await driver.findElement(By.id("checkBox1"));
if (element != null) {
  await driver.executeScript("arguments[0].checked = false;", element);
}

这会强制取消选中该框,无论它是否首先被选中。无需点击。

【讨论】:

    【解决方案2】:

    一位同事帮助了我,这很容易,这是它的工作方式:

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("custom-checkbox[label^='Yahoo']"))).click();
    

    感谢您的帮助。 :)

    【讨论】:

      【解决方案3】:

      在 List 中获取过滤结果列表(Facebook (25911) 、Hotmail(7651) 和 yahoo 的列表,比如说列表 B)。

      现在在该 web 元素列表上迭代 for 循环(B),如果该元素与您要取消选中的元素相同,那么您可以拥有该元素的索引(假设您要取消选中Hotmail,因此您将获得索引 1) 现在只需使用该索引在 xpath 中使用该索引获取一个元素(例如:- //ul[@ag-id='gallery1']/li["( +i+1)+"]/div/div/h4/a)。然后点击那个元素。

      【讨论】:

        【解决方案4】:

        有些元素真的很挑剔。

        尝试使用 .sendKeys(Keys.Return) 而不是 .click()。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-11
          • 2020-02-24
          • 1970-01-01
          • 2022-12-18
          • 1970-01-01
          • 2022-07-21
          • 1970-01-01
          • 2019-08-23
          相关资源
          最近更新 更多