【发布时间】:2015-07-07 19:07:56
【问题描述】:
我正在使用 selenium webdriver 和 java 来测试我公司的 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 方法,但我遇到了同样的随机问题。
有人知道为什么会这样吗? 抱歉链接,但我没有其他选择来向您展示我的问题..如果需要,我还可以发布我在测试期间得到的随机错误输出..
【问题讨论】:
-
给出web应用的html代码。
-
XPath 太可怕了!不要使用
for计数器循环。设置一个循环来迭代findElements(By.tagname('tr')),并设置一个内部循环来迭代findElements(By.tagname('td'))。
标签: java firefox selenium xpath