【问题标题】:How can i Check JavascriptExecutor in loop?我如何在循环中检查 JavascriptExecutor?
【发布时间】:2016-11-05 06:29:59
【问题描述】:

如果字符串出错,我想退出循环,我无法检查它是否为空。

循环需要 2 个脚本并获取所有单元格,最后编译器会出错。

如何在计算最后一个字符串(错误时间)之前退出?

谢谢

String script3 = "return document.getElementsByTagName('g')[" + f9 + "].textContent";
n = (String) ((JavascriptExecutor) driver).executeScript(script3, hiddenDiv); 

n 获取所有标签(g),最后它给出一个不为空的错误,所以我无法停止循环。

我想在出错前停止循环。

我这样做是为了计算标签。

【问题讨论】:

    标签: java selenium selenium-webdriver selenium-ide selenium-firefoxdriver


    【解决方案1】:

    您可以使用findElements方法获取所有g标签

    List<WebElement> gTags = driver.findElements(By.tagName("g"));
    

    并获取g标签的数量

    int size = gTags.size();
    

    【讨论】:

    • 但是,隐藏元素中的g标签。
    【解决方案2】:

    使用trycatch捕获错误并打破循环

    for(...)
    {
       try
       {
          //your javascript code HERE
       }
       catch(Exception ex)
       {
          string exMessage = getMessage();
          break;
       }
    }
    

    【讨论】:

    • 我们在 catch 里面写了什么?
    • 从 ex 你可以得到关于异常的所有信息
    【解决方案3】:

    有几种方法可以做到这一点。我会像下面那样做。基本上,您使用 Javascript 来获取所有 g 标记,遍历它们以收集它们的 .textContent,然后将 List 返回到您的 Java 代码。然后,您可以在 Java 中遍历 List 并执行任何操作。

    String script3 = "var strings = []; var g = document.getElementsByTagName('g'); for (var i = 0; i < g.length; i++) { strings.push(g[i].textContent); } return strings;";
    List<String> s = (List<String>) ((JavascriptExecutor) driver).executeScript(script3);
    System.out.println(s);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-28
      • 2012-07-28
      • 1970-01-01
      • 2013-04-10
      相关资源
      最近更新 更多