1

我使用 WebDriver 不是为了测试,而是为了做一些例行的事情,比如找出我的账户余额。

在这样做时,我有一些未找到的元素,我遍历窗口并能够登录。

现在我已经登录了,我使用了按 id 查找、按 xpath 查找、按类查找,并且找不到对象来获取页面上的余额(至少我可以查看它并且它在 firebug 中)。我打印了页面源,但页面源只有初始源,没有 javascript 修改。

我试图通过正文的 javascript 获取内部 html,但它仍然给了我你通过页面源获得的 html。

WebDriver 是否有可能没有访问 DOM?

我看到的所有帖子都说您必须等待足够长的时间,而我隐式等待 30 秒。我倾向于认为这不是等待问题。

当我使用 firebug 时,我看到了元素,这就是我获得 xpath 的方式。但是用xpath找不到。

如果我可以将源(由 javascript 生成)保存到所有元素都存在的文件中,我什至会感到满意。

我将它与firefox和windows xp sp3一起使用。

我用这段代码遍历 iframe

List <WebElement> framesList = driver.findElements(By.xpath("//iframe"));
for(WebElement frame:framesList){
    element = driver.findElement(By.className("account-balance"));
    String et= element.getText();
    System.out.println(et);
}

System.out.println("frames:" + framesList.size());

我得到 frames:0 它没有检测到任何帧。

4

2 回答 2

1

我弄清楚我的问题是什么。

我上面使用的代码不起作用。它正在迭代帧但不切换到它们。

  1. 我正在寻找 iframe,但代码正在寻找的是第二帧。我不只是在寻找 //frame
  2. 我不得不切换到正确的框架。为此,我必须使用 firepath 为框架找到正确的 xpath。
  3. 并且在切换到框架之前,我必须先转到默认内容。

这就是它找不到默认内容的原因。

可惜selenium ide没有记录需要的帧和窗口切换。

我看到另一个答案也谈到了 如何使用 Java 在 Selenium WebDriver 中的帧之间切换

于 2013-05-12T17:29:43.417 回答
1

您需要将 .findElement 包装在 try/catch 中。在 try catch 子句中,使用循环,您可以将隐式超时减少到 5 秒,并且您可以重试直到不再有异常。也许你会从我这里的帖子中得到一些想法。

于 2013-05-10T22:31:54.113 回答