【问题标题】:Finding and Clicking element in list - Selenium在列表中查找和单击元素 - Selenium
【发布时间】:2015-11-18 00:54:06
【问题描述】:

我一直在搞乱这个选项页面的自动化,因为它提供了各种选项,每个选项都有自己的子选项,我不想花时间通过它们的 xpath(或 CSS .. 或者)。所以我有这个可靠的代码,它可以很好地在 HTML 标记中找到文本标识符。

public void selectAnOption(String option) {
        List<WebElement> choice = driver.findElements(By.xpath("//div[@class='atcui-scrollPanel-wrapper']/ul/li"));
        for(WebElement e : choice){
            System.out.println(e.getText());
            if(e.getText().equals(option)){
                e.click();
                break;
            }
        }
    }

通过运行,我得到了类似的打印输出

  • 里程

  • 传输

  • 气体类型

等等。太棒了!我知道它们已被识别,但我的 e.click() 实际上并没有点击。当我开始测试时,我没有收到任何错误,它只是说它通过了,但实际上从未点击过该按钮。下面是我正在使用的 HTML 片段,您可以看到它是如何嵌套的。

【问题讨论】:

    标签: java xpath selenium-webdriver automation


    【解决方案1】:

    对于 Java 8 及更高版本,您可以使用:

    public void selectAnOption(String option) {
            List<WebElement> choice = driver.findElements(By.xpath("your_xpath"));
            choice
                 .stream()
                 .filter(e->e.getText().equals(option))
                 .findFirst().get().click();
        }
    

    【讨论】:

      【解决方案2】:

      已修复.. 对于任何有类似问题的人,我相信这在于开发此 html 代码时,有多余的空间(用于设计目的或在开发过程中安装元素..也许?)所以我使用 .contains 而不是 .equals。呵呵!!

      public void selectAnOption(String option) {
              List<WebElement> choice = driver.findElements(By.xpath("//div[@class='atcui-scrollPanel-wrapper']/ul/li"));
              for(WebElement e : choice){
                  System.out.println(e.getText());
                  if(e.getText().contains(option)){
                      e.click();
                      break;
                  }
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-28
        • 2017-03-08
        • 2014-08-06
        • 2017-05-27
        • 1970-01-01
        • 2017-07-09
        • 2014-10-11
        • 2023-04-10
        相关资源
        最近更新 更多