自动填充网页视图中的字段

我已经看到这个问题在互联网上浮动,但我还没有找到一个有效的解决方案。基本上,我想加载我的应用程序并按下按钮;然后,按钮操作将在已加载到Web视图中的网站中填写用户名和密码(或等待onPageFinished)。最后,登录页面上的提交按钮将被激活。

据我所知,这可以通过使用loadUrl(javascript)进行java注入来完成,但我不知道java命令会是什么来填充字段。对于iOS,也提出了同样的问题,但命令略有不同。

是否可以在webivew中用javascript做我所要求的事情,或者我必须在没有像这样这样的webview的情况下做一个http-post?

非常感谢您能提供的任何帮助!


答案 1

谢谢大家的回答,它帮助了我,但没有工作。

它一直打开一个白色的页面,直到我发现这个:

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程序员应该很容易解释这种行为...

希望这会有所帮助


答案 2

您不需要使用“java命令”...而是JavaScript...例如:

String username = "cristian";
webview.loadUrl("javascript:document.getElementById('username').value = '"+username+"';");

所以基本上,你必须做的是一大串JavaScript代码,它将获取这些字段并在它们上面放置值;此外,您还可以从JavaScript启用/禁用提交按钮。


推荐