我正在测试一个使用 Google Web Toolkit (GWT) 的网站。特别是,网站会弹出 GWT-LOG 窗口,该窗口显示网站上发生的所有后台活动。
我正在编写一些 Selenium 测试,我需要能够访问 GWT-LOG 中的条目。
现在,我已经设法通过使用 XPaths 编写了可以占用一大块 GWT-LOG 的代码——我正在使用以前和当前的“指针”来跟踪我上次在 GWT-LOG 窗口中离开的位置.
/**
* Adds each GWT-LOG entry (one line) between "prevXPC" and "curXPC" into an
* ArrayList<String> -- one line per ArrayList index.
*/
public void parseString(ArrayList<String> list) {
// Total count of gwt-log entries
int curXPC = driver.findElements(By.xpath(gwtXPath)).size();
// Empty the ArrayList
list.clear();
// Add elements to the ArrayList between pXPC and cXPC counts
for (int i = prevXPC; i <= curXPC; i++) {
String logEntryXPath = "/html/body/table/tbody/tr[2]/td/div/div/div/div[" + i + "]";
String newEntry = driver.findElement(By.xpath(logEntryXPath)).getText();
list.add(newEntry);
}
prevXPC = (curXPC + 1); // Set the previous XPath count to the current one.
}
当我知道所有日志条目都显示在 GWT-LOG 窗口中时,此代码工作正常。但是,当我执行一个显示一些条目的操作,然后在几秒钟后出现更多条目时,例如当站点正在等待服务器信息时,我的代码不是很有效。
有什么方法可以不断地“关注” GWT-LOG 条目并提醒我,或者ArrayList<String>
像我以前一样使用 Selenium 将新的 GWT-LOG 条目保存到一个?
否则,我将不得不在我的测试中加入 Waits 来解决这个问题。这不是最理想的选择,因为等待的长度可能太长或太短。