[英]Problematic parsing of html table with selenium webdriver
我正在使用带有Java的Selenium Webdriver在我的公司中测试Web应用程序,但我遇到了一个非常奇怪的问题。 登录后的Web应用程序显示此表,其值如下图链接中的图片所示:
https://drive.google.com/file/d/0B0i_2gNTlx1Sek9EQVQ1ZlY1a0E/view?usp=sharing
我写了这段用xpath解析表的代码,因为表的行和td单元格是没有ID的。
//Parsing the table.
int increment = 0;
int i = 0;
for(increment=1; increment <= 16; increment++){
StringBuilder nsb = new StringBuilder("");
StringBuilder sb = new StringBuilder("");
for(i=1; i <= 6; i++){
try {
WebElement f = wd.findElement((By.xpath("/html/body/div[1]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[1]/form/div/div/table/tbody/tr["+increment+"]/td["+i+"]")));
sb.append(f.getText().replaceAll("\\n", " ")).append(" ");
} catch (StaleElementReferenceException ed) {
ed.getSuppressed();
}
}
System.out.println(sb);
}
System.out.println();
现在的问题是,当我有时以随机顺序打印每一行的值时,我在输出上会丢失一些值,如下图所示(例如,如果我重新运行程序,则在第二行中第二行称为SAB将丢失)。
正确的输出是https://drive.google.com/file/d/0B0i_2gNTlx1SQmFoZDd0UkgzVXM/view?usp=sharing
我尝试使用getAttribute(“ textContent”)而不是getText方法,但遇到了同样的随机问题。
有谁知道为什么会这样吗? 抱歉,链接,但我没有其他办法可以向您显示我的问题。.如果需要,我还可以发布测试期间获得的随机错误输出。
一想到,为什么要加上?
catch (StaleElementReferenceException ed) {
ed.getSuppressed();
}
如果没有赶上,您是否会收到此异常? 如果是 ,则可能是您的页面或元素正在刷新,并且当您在第二行上将f引用到getText()时,您可能会收到StaleElementReferenceException,但是在您抑制它时,您的循环继续进行,并且值由于exception丢失 。
你可以尝试更换
WebElement f = wd.findElement((By.xpath("/html/body/div[1]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[1]/form/div/div/table/tbody/tr["+increment+"]/td["+i+"]")));
sb.append(f.getText().replaceAll("\\n", " ")).append(" ");
单句
sb.append(wd.findElement((By.xpath("/html/body/div[1]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[1]/form/div/div/table/tbody/tr["+increment+"]/td["+i+"]"))).getText().replaceAll("\\n", " ")).append(" ");
如果问题是由staleElement异常引起的,那么这可能会避免。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.