我在互联网上看到过这个问题,但我还没有找到可行的解决方案。基本上,我想加载我的应用程序并按下一个按钮;然后,按钮操作将在 webview 中已加载的网站中填写用户名和密码(或等待 onPageFinished)。最后,登录页面上的提交按钮将被激活。
据我了解,这可以通过使用 loadUrl(javascript) 进行 java 注入(inject)来完成,但我不知道填充字段的 java 命令是什么。对 iOS 提出了同样的问题,但命令略有不同。
是否可以在 webivew 中使用 javascript 执行我所要求的操作,或者我是否必须在没有 webview 的情况下执行 http-post,例如 this或 this ?
非常感谢您提供的任何帮助!
最佳答案
感谢大家的回答,它帮助了我,但没有奏效。
在我找到这个之前,它总是打开一个白页:
https://stackoverflow.com/a/25606090/3204928
所以这里是完整的解决方案,混合在这里和那里找到的所有信息:
1) 首先你必须启用 DOM 存储,如果你不这样做,.GetElementByXXX 将不会返回任何内容(你必须在加载页面之前这样做)
myWebView.getSettings().setDomStorageEnabled(true);
2)您对 GetElementByXXX 的最后一次 Javascript 调用必须将结果存储在变量中
示例 1:
_webview.loadUrl("javascript:var uselessvar =document.getElementById('passwordfield').value='"+password+"';");
这里只有一个调用(只有一个分号),所以我们立即将结果存储在 'uselessvar' 中
示例 2:查看 user802467 答案
这里有3个调用(一个用于登录字段,一个用于密码字段,一个用于提交按钮),只需要存储最后一个调用,它在'frms'中完成
Javascript 程序员应该很容易解释这种行为...
希望这会有所帮助
关于java - 自动填写 webview 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961568/