【问题标题】: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();
【解决方案2】:
使用trycatch捕获错误并打破循环
for(...)
{
try
{
//your javascript code HERE
}
catch(Exception ex)
{
string exMessage = getMessage();
break;
}
}
【解决方案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);