java - 自动填写 webview 中的字段

标签 java android webview http-post android-webview

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

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

是否可以在 webivew 中使用 javascript 执行我所要求的操作,或者我是否必须在没有 webview 的情况下执行 http-post,例如 thisthis ?

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

最佳答案

感谢大家的回答,它帮助了我,但没有奏效。

在我找到这个之前,它总是打开一个白页:

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/

相关文章:

java - 避免多个 Not null 语句

java - Android - 使用 Callable 进行联网

android - 带有嵌入式视频的 WebView 在后台播放

android - 在 Android 应用程序中创建 HTML 内容是个坏主意?

java - Richfaces文件上传: How to set path of temp files and how to clean it

java - 为什么我的 spring boot @RequestMapping 不工作?

android - Admob 安卓 : Rewarded video not showing sometimes

ios - 在 safari 中打开链接而不是在 webview 中

java - 为什么 Hibernate 5.2 支持 java.time.Instant 但 JPA 2 不支持?

android - 无法解析符号 'gms'。无法导入 Google Play 服务