2012-04-26 23 views
4

我们正在使用Selenium(适用于Firefox)进行一些自动化操作,并记录了一个脚本以进行回放。这个工作正常,直到供应商进行了一些新的更改。现在我们得到以下错误,不知道这意味着什么...Selenium - 拒绝获取属性的权限HTMLDocument.readyState

[info] Executing: |waitForPopUp | LookuphdnProductId1 | 40000 | 
    -->[error] Permission denied for <https://books.zoho.com> to get property HTMLDocument.readyState 
    [info] Executing: |selectWindow | name=LookuphdnProductId1 | <br/> 
    -->[error] Unexpected Exception: fileName -> chrome://selenium-ide/content/selenium-core/scripts/selenium-browserbot.js, lineNumber -> 840 

任何有浏览器自动化或硒的经验的人会抛出一些提示?

由于

回答

6

经由this blogpost和:

它基本上与Same origin policy一个问题,就是硒RC(并且因此也硒IDE的)的设计限制。问题是Selenium以Javascript的形式运行所有的命令 - 而JavaScript不能跨域运行。但是你显然会在测试中改变域名。

难道你不在某处尝试打开这样的地址:http://www.somedomain.com/link=www.google.com?如果是,您可能需要立即打开http://google.com。如果你点击一个具有这种href的链接,尝试挖掘链接并在脚本中“手动”打开url。或者使用带有一些附加组件的Firefox,我已经看到了一些。

如果只有一个重定向到另一个网站/域,那么你在泡菜。如果从foo.com开始,并通过某个链接重定向到bar.org,那么您不能在脚本中手动使用andWait命令并再次打开bar.org(因此它在该域上运行并且具有正确的访问权限)。

顺便说一句,Selenium 2(WebDriver)没有这个限制。

+0

我怀疑它,但脚本中没有任何'open'URL,脚本假定你在正确的页面/ URL并开始点击右边的控件。在这种情况下,我应该手动设置域名/网址?谢谢 – lud0h 2012-04-26 09:41:38

+0

绝对诚实,我不知道。有一堆你可以尝试的东西。如果您不需要在弹出窗口中工作,那么只需简单地删除“andWait”并关闭窗口即可。如果需要,可以尝试将测试用例分成两部分 - 打开弹出窗口,从那里开始/从URL打开窗口(如果没有POST数据,那就是)。祝好运,无论如何,请在获得解决方案后发布解决方案。或者开始一个关于如何克服这个问题的新问题:)。 – 2012-04-26 09:50:46