【问题标题】:Selenium Webdriver - Java - How to click checkbox based on productSelenium Webdriver - Java - 如何根据产品单击复选框
【发布时间】:2017-03-31 03:27:21
【问题描述】:

我想根据链接文本单击复选框。页面中有几个复选框,所以使用链接文本我想找到复选框的值,以便我可以点击复选框

注意#所有值都是动态生成的

能否请您帮助更正代码以包含此逻辑。谢谢

   driver.get(new URI(driver.getCurrentUrl()).resolve("/admin/lms/tag").toString());
   String tag_name = sheet1.getRow(j).getCell(0).getStringCellValue();
   driver.findElement(By.linkText(tag_name)).click();
   WaituntilElementpresent.isExist();
   String tag_value = sheet1.getRow(j).getCell(1).getStringCellValue();
   driver.findElement(By.cssSelector("a[href*='"+tag_value+"']")).click();
   WaituntilElementpresent.isExist();
   String product = sheet1.getRow(j).getCell(2).getStringCellValue();
   WaituntilElementpresent.isExist();
   driver.findElement(By.cssSelector("input[name='products[]'][value='11']")).click();

https://i.stack.imgur.com/mOBY2.png

【问题讨论】:

  • 请将 HTML 发布为问题中格式正确的文本,而不是图像。另外,请花一点时间来修正代码的缩进,使其更易于阅读。
  • 根据您的要求更新了我的问题

标签: java selenium checkbox


【解决方案1】:

我会把这部分写成一个函数,这样它就可以重用了。

public static void selectByProductName(String value)
{
    driver.findElement(By.xpath("//tr[//a[text()='" + value + "']]/td/input")).click();
}

然后像这样称呼它

selectByProductName("OPIOIDMORTEID");

【讨论】:

  • 嗨,杰夫,我尝试使用上面的代码,但它没有找到产品并单击复选框。感谢您的帮助!
【解决方案2】:

看看这个:

  1. 获取具有公共定位符的复选框 WebElement 列表,即公共类名或标签名(此 WebElement 必须具有文本或是具有文本的元素的父级)。

    List<WebElement> checkBoxElements = webDriver.findElements(By.cssSelector("checkbox"));
    
  2. 遍历列表并检查 WebElement 是否包含您要查找的文本。如果是,请点击它!

    for (WebElement e : checkBoxElements) {
        if (e.getText().contains("Something dynamic")) {
            e.click();
        }
    }
    
  3. 很高兴这有效。

【讨论】:

    【解决方案3】:

    您可以使用这样的 xpath:

    //tr[.//*[text()='OPIOIDMORTEPID']]//input
    

    这意味着找到具有此确切文本的td,并从中找到input
    如果你想使用部分文本,那么:

    //tr[.//*[contains(text(), 'MORTEPID')]]//input
    

    【讨论】:

      【解决方案4】:

      您可以通过以下策略做到这一点:

      1. 使用链接文本查找链接
      2. 获取父元素tr
      3. 从那里找到复选框的input 元素
      4. 点击复选框

      这可以按如下方式完成:

      WebElement link = driver.findElement(By.linkText("OPIOIDMORTEPID"));
      WebElement trElement = link.findElement(By.xpath("../.."));
      WebElement checkboxElement = trElement.findElement(By.tagName("input"));
      
      checkboxElement.click();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-24
        • 1970-01-01
        • 2015-12-23
        • 1970-01-01
        • 2022-01-15
        • 2018-11-14
        • 2015-12-03
        相关资源
        最近更新 更多