Java 安卓网络驱动程序。XMLHttpRequest无法加载';URL';。原产地';URL';访问控制允许原点不允许。空时:1

Java 安卓网络驱动程序。XMLHttpRequest无法加载';URL';。原产地';URL';访问控制允许原点不允许。空时:1,java,android,json,webdriver,Java,Android,Json,Webdriver,我正在使用SeleniumWebDriver和Java在Nexus10(Adndroid4.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总是会

我正在使用SeleniumWebDriver和Java在Nexus10(Adndroid4.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更改的一些设置?也许有人曾经遇到过类似的事情。我感谢你的建议

我试过APK2.21.0和2.32.0

看看这个

XMLHttpRequest无法加载“URL1”。访问控制允许源不允许源“URL2”。空时:1

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

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

<> P> >基本上,这是发生在 URL1由jQuery,JSON.

<强> >不可访问< /P> > P>因为我不完全知道你的代码,我只给你一个解释,我想你怎么能解决这个问题,请不要把它当作一个真正的答案,试试看吧) 我有时会遇到这个问题,通常您可以使用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

在我的例子中,这就是web套接字的问题。该应用程序基于web套接字。关键是,在android 4.4和Selenium完全使用本机android浏览器执行测试之前,本机android浏览器不支持套接字


我已经用Android 4.4在emulator上测试过了,一切正常。谢谢大家的帮助。

发生此错误时,能否显示正在运行的代码?启动浏览器了吗?代码运行正常。浏览器启动,webdriver工作(填写必填字段,然后按“登录”按钮)。这是CORS或JSONP的一些问题。我正在寻找AndroidWebDriver的高级设置,它可以帮助我解决这个问题。我用
WebDriver=newandroiddriver(“http://localhost:8080/wd/hub");此错误在
驱动程序之后立即开始出现。获取(“http://someurl.com");和每2秒发生一次,然后停止。在
WebElement loginButton=driver.findElement(By.id(“login”))之后
loginButton.submit()它再次出现。似乎是因为来自后端的响应,并且只有在凭据正确的情况下。如果凭据不正确-一切正常-将显示相应的警报。不清楚为什么仅在android webdriver中发生此错误。FireFoxDriver、ChromeDriver甚至iPhoneDriver都可以正常工作……您是否尝试使用不同的域加载url?我不知道您想做什么,但是错误消息让我想到了我使用Java6U43的同一来源策略。我需要更新它吗?因为现在
Build
变量未定义。@Evgeniy,无需更新JAVA。构建源于导入android.os.Build和版本代码来自
导入android.os.Build.VERSION\u代码谢谢。“webView”在哪里定义?webView是您当前用于显示在线内容的webView。如何初始化“webView”?我正在使用Web驱动程序处理浏览器。我从未使用过WebView。