0

我正在测试一个使用 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 来解决这个问题。这不是最理想的选择,因为等待的长度可能太长或太短。

4

0 回答 0