【问题标题】:Cannot click on checkbox using selenium in java无法在java中使用硒单击复选框
【发布时间】:2020-07-24 22:55:02
【问题描述】:

我正在尝试过滤掉亚马逊中的书名,所以在我成功导航并搜索到我想要的书后,我试图过滤掉侧面过滤器面板上的所有英文书

当我尝试在我的代码中单击“英语”语言复选框时,它确实单击了某些内容,但未按预期选中该复选框,这是 html:

这是我的代码:

        List<WebElement> list = driverWrapper.findElements(By.cssSelector("ul[aria-labelledby='p_n_feature_nine_browse-bin-title'] li"));
        for(WebElement elem: list){
            if(elem.getText().equals(LangugaeFilterOptions.ENGLISH.getValue())){
                elem.click();
            }
        }

编辑: 这是完整的元素 html:

<li id="p_n_feature_nine_browse-bin/3291437011" aria-label="English" class="a-spacing-micro" xpath="1"><span class="a-list-item">                      <a data-routing="" class="a-link-normal s-navigation-item" tabindex="-1" href="/s?k=lord+of+the+rings+the+two+towers&amp;i=stripbooks-intl-ship&amp;rh=p_n_feature_nine_browse-bin%3A3291437011&amp;dc&amp;crid=23TXZEAWG63AR&amp;qid=1595601320&amp;rnid=3291435011&amp;sprefix=lord+of+the+rings+%2Cstripbooks-intl-ship%2C314&amp;ref=sr_nr_p_n_feature_nine_browse-bin_1">            <div class="a-checkbox a-checkbox-fancy s-navigation-checkbox aok-float-left"><label><input type="checkbox" name="" value=""><i class="a-icon a-icon-checkbox"></i><span class="a-label a-checkbox-label"></span></label></div>      <span class="a-size-base a-color-base" dir="auto">English</span>              </a>         </span></li>

【问题讨论】:

  • 请阅读为什么screenshot of HTML or code or error is a bad idea。考虑使用基于格式化文本的相关 HTML、代码试验和错误堆栈跟踪来更新问题。
  • 谢谢,我确实从我的问题中删除了图片
  • 当您发布 HTML 时,请花一点时间使用像 jsbeautifier.org 这样的美化工具。如果您需要帮助在网站上正确格式化它,请参阅问题编辑器侧栏中的格式化帮助链接。它使它更容易阅读,从而使您的问题更有可能得到回答。此外,HTML 图像未从问题中删除。

标签: java selenium checkbox


【解决方案1】:

您需要在输入标签上发送点击。点击正在其他地方。修改 CSS/Xpath 以到达下面的输入。 希望对您有所帮助!

【讨论】:

  • 你能把用于输入的 xpath/CSS 发给我吗
  • 评论不能太长我将编辑我的问题并添加它我会将其放在 EDIT
  • findElement(By.Xpath("//ul[@aria-labelledby='p_n_feature_nine_browse-bin-title']/li/span/a/div/label/input")).click( );
  • 这不是我理解的输入值,它是一个 href 元素,它是一个链接,所以这是问题所在,我最终解决了。
  • 用以下代码替换你的代码:- List list = driverWrapper.findElements(By.cssSelector("ul[aria-labelledby='p_n_feature_nine_browse-bin-title'] li")); for(WebElement elem: list){ if(elem.getText().equals(LangugaeFilterOptions.ENGLISH.getValue())){ elem.FindElement(By.Xpath("//span/a/div/label/input") .click(); } }
【解决方案2】:

您可以尝试使用xpath 而不是cssSelectorfindElements 这是您如何操作的链接-> https://stackoverflow.com/a/54746459/11278696

【讨论】:

  • 我也使用 xpath 来实现此功能,但没有成功://ul[@aria-labelledby='p_n_feature_nine_browse-bin-title']/li
【解决方案3】:

问题是这个复选框实际上是一个链接复选框,所以需要做的是点击元素

driver.findElement(By.linkText("English").click();  

这样就可以了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2017-04-30
    • 2019-10-13
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多