gpt4 book ai didi

javascript - Selenium IDE - 错误 : Permission denied for 获取属性 Location.href

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:41 26 4
gpt4 key购买 nike

我在 Ubuntu 11.10 上运行的 Firefox 11 上使用 Selenium 1.7.2。直到昨天,我们才使用 document.domain javascript。我们需要将它添加到我们生成的 HTML 和我们的一个 javascript 文件中。现在当我们运行 Selenium IDE 测试套件时,我们得到以下错误:

Error: Permission denied for <http://dev.example.com> to get property Location.href

dev.example.com是我们的应用服务器(Apache+mod_jk背后的Glassfish 3.1.2)

如果我注释掉 document.domain 一切正常(至少在 Firefox 中,因为 document.domain 是为了防止 IE 阻止 PIE.htc 脚本...叹息 )

我尝试添加发现的用户扩展脚本 here :

function setdom(str,doc,dom) {
doc.domain = dom;
}

Selenium.prototype.doDocumentDomain = function(domain) {
var lw;
setdom('ts',frames['testSuiteFrame'].document, domain);
setdom('tf', getTestFrame().contentWindow.document, domain);
setdom('my', frames['myiframe'].document, domain);

lw = LOG.getLogWindow();
if (lw) {
setdom('log', lw.document, domain);
}
setdom('doc', document, domain);
}

但这看起来很旧,可能不再兼容。它在第一次调用 setdom('ts',frames['testSuiteFrame'].document,domain); 行时返回错误

我不是在 HTTP 和 HTTPS 之间来回浏览,我已经阅读了很多 StackOverflow 和 Google Group 相关的问题,但没有结果。

我可以修改我们的代码以包含仅用于 IE 的 document.domain 但它不是很干净...

问题:设置了 document.domain 后,如何使 Selenium IDE 正常工作而没有安全问题?或者我如何修复他上面的用户扩展以在 Selenium IDE 1.7.2 中工作?谢谢。

最佳答案

所以我决定更改 Selenium javascript 以允许我使用此设置 document.domain:

在第 920 行的 `chrome/content/selenium-core/scripts/selenium-browserbot.js(对于版本 1.7.2):

    //Samit: Fix: open command sometimes fails if current url is chrome and new is not
windowObject = core.firefox.unwrap(windowObject);
// -------------- Start My Change ----------------
updateDomain(windowObject.document);
// -------------- End My Change ----------------
if (this._windowClosed(windowObject)) {
LOG.debug("pollForLoad WINDOW CLOSED (" + marker + ")");
delete this.pollingForLoad[marker];
return;
}

然后在 user-extensions.js 中:

var validDomain = null;

Selenium.prototype.doDocumentDomain = function(domain) {
validDomain = domain;
}

function updateDomain(doc) {
if(validDomain==null) {
return;
}
LOG.info("Current domain: " + doc.domain);
if(doc.domain != validDomain && (doc.domain+"").indexOf(validDomain)>0 ) {
doc.domain = validDomain;
}
LOG.info("New domain: " + doc.domain);
}

我在设置新域之前检查它是我要设置的域的子域。我在 Selenium IDE 中使用它:

documentDomain | example.com

因此当它打开 dev.example.com 和 static.example.com 时,它会在域中找到 example.com 并替换该域。

关于javascript - Selenium IDE - 错误 : Permission denied for <http://www. example.com> 获取属性 Location.href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com