javascript - Selenium IDE 1.4.1 在上传本地文件时抛出安全错误

标签 javascript firefox selenium firefox-addon

使用这个简单的配置:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="https://localhost:8080/" />
<title>basic</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<tr>
    <td>open</td>
    <td>/upload.html</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>foo</td>
    <td>C:\Temp\harmony\tests\02.basic\config.xml</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>//input[@value='Upload']</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=go to home</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>link=New order</td>
    <td></td>
</tr>
</table>
</body>
</html>

我收到以下错误:

[error] Unexpected Exception: code -> 1000, INDEX_SIZE_ERR -> 1, DOMSTRING_SIZE_ERR -> 2, HIERARCHY_REQUEST_ERR -> 3, WRONG_DOCUMENT_ERR -> 4, INVALID_CHARACTER_ERR -> 5, NO_DATA_ALLOWED_ERR -> 6, NO_MODIFICATION_ALLOWED_ERR -> 7, NOT_FOUND_ERR -> 8, NOT_SUPPORTED_ERR -> 9, INUSE_ATTRIBUTE_ERR -> 10, INVALID_STATE_ERR -> 11, SYNTAX_ERR -> 12, INVALID_MODIFICATION_ERR -> 13, NAMESPACE_ERR -> 14, INVALID_ACCESS_ERR -> 15, VALIDATION_ERR -> 16, TYPE_MISMATCH_ERR -> 17, DATA_CLONE_ERR -> 25, message -> Security error, result -> 2152924136, name -> NS_ERROR_DOM_SECURITY_ERR, filename -> chrome://selenium-ide/content/selenium-core/scripts/atoms.js, lineNumber -> 8910, columnNumber -> 0, location -> JS frame :: chrome://selenium-ide/content/selenium-core/scripts/atoms.js :: <TOP_LEVEL> :: line 8910, inner -> null, data -> null

升级到 Firefox 8 后会发生这种情况。在此之前,测试工作正常。 Selenium IDE 版本是 1.4.1,这似乎是最后一个。

请帮忙。

谢谢。

马丁

编辑:错误中的行是:a.value = d。这是整个函数:

core.events.replaceText_ = function(a, b) {
  bot.events.fire(a, "focus", {bubble:!1});
  bot.events.fire(a, "select");
  var c = bot.dom.getAttribute(a, "maxlength"), d = b;
  c != null && (c = parseInt(c), b.length > c && (d = b.substr(0, c)));
  if(bot.dom.isElement(a, goog.dom.TagName.BODY)) {
    if(a.ownerDocument && a.ownerDocument.designMode && (new String(a.ownerDocument.designMode)).toLowerCase() == "on") {
      a.innerHTML = d
    }
  }else {
    a.value = d
  }
  try {
    bot.events.fire(a, "change")
  }catch(e) {
  }
};

最佳答案

在firefox extensions目录下找到atom.js文件,按函数体搜索:

core.events.replaceText

因此,寻找具有以下内容的行:

a.value = d

并将其更改为:

XPCNativeWrapper(a).value = d;

它将修复错误。

关于javascript - Selenium IDE 1.4.1 在上传本地文件时抛出安全错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8149403/

相关文章:

javascript - 通过网络应用程序使用 viber-api 和 node.js 发送批量消息

javascript - 加载html页面到div,不影响div外的样式

javascript - 带有 socketio : wht doesn't publisher publish message? 的 nodejs 中的 redis pubsub

firefox - 为什么 pdftk 生成的 pdf 文件无法在 Firefox 中呈现?

javascript - D3 更改选择/附加 svgs 的顺序

javascript - 将文件从插件复制到配置文件文件夹

css - 在 Firefox 59.0 中隐藏滚动条

javascript - 在 Protractor 中,如何在准确的时间抓取多个值以用于具有大量推送通知的应用程序

grails - 使用Chrome驱动程序时出现 Selenium 异常

selenium - 在 Hudson 下运行自动化 Web 浏览器测试