Webdriver确实存在时没有这样的元素,我已经等了足够长的时间

时间:2013-05-10 20:57:07

标签: java javascript selenium webdriver

我使用WebDriver不测试,而是做常规的事情,比如找出我的账户余额。

在这样做时,我有一些未找到的元素,我通过窗口迭代并且能够登录。

现在,我登录,我用的ID发现,与XPath发现,按类查找和对象未找到,让我的平衡是在页面上(至少我可以看到它,它是在萤火虫)。 我打印出页面源,但页面源只有初始源,没有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());

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

  1. 我一直在寻找iframe,但代码正在寻找的是第二帧。我不是只想找//框架
  2. 我不得不切换到合适的框架。 为此,我必须使用firepath为框架找到合适的xpath。
  3. AND在切换到帧之前,我必须先进入defaultcontent。
  4. 这就是它无法找到默认内容的原因。

    selenium ide不记录所需的帧和窗口切换太糟糕了。

    我看到另一个答案也谈到这一点 How to switch between frames in Selenium WebDriver using Java