FF 30.0 使用 Selenium IDE 2.5.0 填充页面时出现 NS_ERROR_XPC_SECURITY_MANAGER_VETO 错误

问题描述 投票:0回答:5

运行 selenium IDE 脚本来自动填写表单时,我收到以下信息:

[error] There was an unexpected Alert! [Javascript Error :MY-SUPER-TOP-SECRET-URL line 37 Error: NS_ERROR_XPC_SECURITY_MANAGER_VETO: ]

当我检查第 37 行时,它是一个设置全局 bool 的小代码块,包装在 jQuery click() 匿名函数中。

  parent.jQuery(parent.document).click(function () {
     parent.sharedVars.enableGenderKey = false;
  });

我正在运行 jQuery 1.8.3。 有小费吗?有趣的是,表单确实填写成功一次,但在尝试 2 次及以上时,它会出错。

javascript jquery selenium selenium-ide
5个回答
2
投票

我们追踪到了它,我们认为这是错误的 SSL 证书。 我们无法绝对确认,但一旦证书得到解决,问题似乎就消失了


2
投票

我知道这是一篇旧帖子,但我今天收到此错误(jQuery 2.2.3 和 Firefox 46.0.1)。我有 (A) 一个表单帖子,它导致 (B) 一个 iframe 加载了 jQuery 代码,(C) 在 iframe 的父级中创建了元素。其中一些具有匿名函数来处理点击事件。单击时,此函数导致 (D) 表单再次提交到 iframe。

(D) 中的函数运行一次,然后在第二次(以及随后的每次)单击时发生上述否决错误。这与 OP 描述的设置类似:一个匿名 jQuery 函数多次使用表单执行某些操作。

根据这个理论,我重构了整个解决方案以避免这种情况并消除了错误。

这是在我的情况下完成的解决方法:我在页面(iframe 之外)中有一个 javascript 函数来处理我想做的事情。

function myclick(e)
{
  if (!$(e.target.hasClass('wantclick'))) return;
  actualstuff();
}

我将

onclick='myclick(event);'
绑定到 iframe 中的 jQuery 代码将新内容放入其中的 div。在 iframe 内,我有 jQuery 做
.addClass('wantclick')


1
投票

我在 Firefox 57、Linux Mint 14.04 上也遇到了同样的错误 我正在用 jquery 做一些项目。起初,直到我执行 POST 请求并使用

complete()
回调方法处理 jqXHR 对象(请参阅弃用通知)时,错误才出现,这就是它在控制台中出现的方式。 但症状始终存在: 我的浏览器有点挂起,所以我每次都必须按 F5。我评论了一些
alert(JSON.stringify(jqXHR))
,错误消失了,而不是症状。

我检查了Chrome和Chromium,没有这样的错误。 我无法说出原因是什么,但我只需重新启动浏览器即可解决问题,但可能是 Firefox 的缓存问题

希望能有所帮助。


0
投票

我们在一个框架集环境中拥有这个,其中我们持有对一些先前加载的、现在无效并被丢弃的框架内容的引用(通过一些 jQuery 对象),这些内容已经被刷新,因此不再存在。

在访问 jQuery 框架对象之前刷新它修复了它。


0
投票

我今天遇到了这个问题(在firefox 126中),发现我在iframe中有一个回调,在iframe卸载后试图从父页面调用。

我通过将回调函数的调用移动到父页面来修复它。

即来自:

parent.js

[...]
function this_will_be_calledback(){
    do_stuff();
}
function do_stuff_after_time(cb){
    setTimeout(cb,10000);
}
[...]

iframe.js

function foo(){
    do_stuff_after_time(()=>{parent.this_will_be_calledback()});
}

我把它改为:

parent.js

[...]
function this_will_be_calledback(){
    do_stuff();
}
function do_stuff_after_time(cb){
    setTimeout(cb,10000);
}
function caller(){
    do_stuff_after_time(()=>{this_will_be_calledback()});
}
[...]

iframe.js

function foo(){
    parent.caller();
}

我没有将

do_stuff_after_time
caller
更改为一个函数,因为其中还有一些其他奇怪的代码分支,但它可能对你有用。

我不知道为什么会这样,但我相信这与 iframe 被卸载以及回调尝试在其上下文中运行有关。

© www.soinside.com 2019 - 2024. All rights reserved.