0

无法访问 document.body。此 HTML 页面是否已完全加载?这是我使用 selenium RC 时遇到的错误。我正在开发 testNG 框架,我在 Eclipse 中用 java 编写测试脚本。我使用 Selenium RC 来执行我的测试脚本。这是我在编辑窗口上单击保存按钮后遇到的错误。虽然我在单击保存和下一次调用之间使用了 Thread.sleep("1000") 我的代码看起来像

            selenium.click(saveButton);     
            Thread.sleep(sleep);      
            while(selenium.isTextPresent("Processing ...")) 
            Thread.sleep(sleep);

我在 while(selenium.isTextPresent("Processing ...")) 行上遇到错误。

4

3 回答 3

1

在你之后selenium.click(saveButton),而不是Thread.sleep(sleep)那可能不是正确的时间长度,你应该selenium.waitForPageToLoad(...)

于 2012-08-28T15:17:57.753 回答
0

您可以尝试不同的等待语句。waitForTestPresent,WaitForElementPresent。这样,selenium 就知道要等待多少以及要等待什么。你也可以使用clickAndWait ..

于 2012-09-05T05:11:22.057 回答
0

实际上我有一个类似的问题,在 selenium 用户组的论坛上进行了一些搜索后,确定 Ajax 调用导致此问题,AJAX 页面加载需要一些时间,但 Selenium 正在尝试转到下一个命令而不等待上一个调用完成。selenium.waitForPageToLoad(10000)不等待 AJAX,首先我在命令之间尝试一些减速器,在您的 Ajax 调用之后和检查文本之前。但是在阅读了这篇关于硒测试的博客文章http://zurmo.org/wiki/selenium之后,我决定添加 selenium.waitForCondition() 方法来等待 jQuery 加载。我现在使用这个结构:

        selenium.waitForPageToLoad(10000);
        selenium.waitForCondition("typeof selenium.browserbot.getCurrentWindow().jQuery == 'function'", "10000");
        Thread.sleep(1000L);
        Assert.assertTrue("Warning Message", selenium.isTextPresent("elementText"));

博文建议

  1. 在 FireFox IDE 中编写所有测试,并首先专注于让它在那里成功运行。
  2. 不用担心 Chrome/IE,因为第一个目标是 FireFox 中的稳定测试套件。让它在一个浏览器上完全稳定比在 3 个浏览器上工作更重要
  3. 编写所有测试以快速运行。一开始我们认为因为 selenium 很挑剔,所以我们必须编写所有东西才能以 SLOW 速度运行。这实际上会产生问题,因此请让您的测试以 FAST 速度运行。到目前为止,我们只发现了一个地方需要暂时放慢几条线路的速度。我稍后会提到这一点。每当您执行导致整个页面加载的操作时,您都需要遵循以下模式:

直接访问 url 的模式

  • 打开 - 我的网址

  • 等待页面加载

  • waitForCondition – selenium.browserbot.getCurrentWindow().jQuery.active == 0(我在这里更改为“typeof selenium.browserbot.getCurrentWindow().jQuery == 'function'”这对我有用。

但我强烈建议阅读博客文章。

于 2014-02-11T13:20:30.707 回答