4

我正在使用 Selenium WebDriver 和 Java 在 Nexus 10 (Adndroid 4.2) 上运行我的自动化测试。我面临的错误是:

XMLHttpRequest cannot load 'URL1'. Origin 'URL2' is not allowed by Access- Control-Allow-Origin. at null:1
  • URL1 - 基于 json 的后端;
  • URL2 - 前端。

FireFox、Chrome、IE 10 不会出现此错误。但 Android 上的 WebDriver 总是会出现此错误。由于它登录到系统是不可用的。WebDriver 可以点击、发送密钥等。

所以问题是:是否存在任何解决方法来避免这个问题?可能是我应该为 WebDriver 更改的一些设置?可能有人以前遇到过这样的事情。我很感激任何建议。

我试过 apk 2.21.0 和 2.32.0。

4

3 回答 3

3

看看这个。

XMLHttpRequest 无法加载“URL1”。Access-Control-Allow-Origin 不允许来源“URL2”。在空:1

添加以下代码,应用程序将正常运行。

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
  webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}

所以,基本上这是发生的,因为URL1jquery ,Json无法访问

于 2013-09-27T08:24:59.070 回答
1

由于我不确切知道您的代码,因此我只会向您解释我认为您可以如何解决问题,请不要将其视为真正的答案,请尝试一下:)

我有时会遇到这个问题,通常您可以使用 CORS 功能在您的服务器中修复它,具体取决于您使用的服务器应用程序/框架,您以不同的方式使用此 CORS,但基本上您需要填写您的回复来自服务器的标头正确地包含以下信息:

Access-Control-Allow-Origin
Access-Control-Allow-Methods
Access-Control-Allow-Headers

一个非常“开放”的配置是:

"Access-Control-Allow-Origin=*
"Access-Control-Allow-Methods=GET, POST, PUT, DELETE, OPTIONS
"Access-Control-Allow-Headers=Content-Type, Authorization
于 2013-09-27T09:07:07.453 回答
0

就我而言,这就是网络套接字的问题。该应用程序基于 Web 套接字。关键是 - 原生 android 浏览器不支持套接字,直到 Android 4.4 和 Selenium 完全使用原生 android 浏览器来执行测试。

我在模拟器上用 Android 4.4 测试过,一切正常。感谢大家的帮助。

于 2013-11-05T15:33:56.313 回答