单击RC中的按钮后查找文本的问题

时间:2012-08-17 11:32:15

标签: java unit-testing testing selenium selenium-rc

无法访问document.body。这个HTML页面是否已满载?这是我用硒RC得到的错误。我正在研究testNG框架,我在Eclipse中用java编写测试脚本。我使用Selenium RC来执行我的测试脚本。   这是我在编辑窗口上点击保存按钮后得到的错误。虽然我在点击保存和下次通话之间使用了Thread.sleep(“1000”)   我的代码看起来像

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

我在(selenium.isTextPresent(“Processing ...”))行中收到错误。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你可以尝试不同的等待声明。 waitForTextPresent,WaitForElementPresent。这样,硒知道要等多少,等待什么。你也可以点击并等待......

答案 2 :(得分:0)

实际上我有一个类似的问题,在selenium用户组的论坛上进行一些搜索后决定Ajax调用会导致这种情况,AJAX页面加载需要一些时间但是Selenium 正在尝试转到下一个命令而不等待之前的呼叫 完成。 selenium.waitForPageToLoad(10000)不等AJAX,首先我尝试一下 在Ajax调用之后,命令之间的速度提升 在检查文本之前。但在阅读了关于selenium tests 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. 编写所有测试以快速工作。一开始我们认为因为硒很挑剔我们不得不写一切以慢速运行。这实际上会产生问题,因此请让您的测试以快速的速度运行。到目前为止,我们只发现了一个点,需要暂时减慢几行的速度。我会稍微提一下。 无论何时执行导致整个页面加载的操作,您都需要遵循以下模式:
  4. 直接转到网址的模式

    • 打开 - myURL

    • waitForPageToLoad

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

    但我强烈建议您阅读博文。