ios – 在UIWebView中自动填充用户名和密码

ios – 在UIWebView中自动填充用户名和密码,第1张

概述我正在为我做一个非常简单的应用程序.当我启动这个应用程序时,它只是带我到这个网页 https://social.tre.it/expert. 我想自动登录,所以有没有办法自动填写用户名和密码,检查“我接受条件”标记并按“登录”按钮? 我尝试了这个Autofill Username and Password UIWebView Swift,但它不起作用,我不是页面的创建者所以我不确切知道它是如何构造 我正在为我做一个非常简单的应用程序.当我启动这个应用程序时,它只是带我到这个网页 https://social.tre.it/expert.

我想自动登录,所以有没有办法自动填写用户名和密码,检查“我接受条件”标记并按“登录”按钮?

我尝试了这个Autofill Username and Password UIWebView Swift,但它不起作用,我不是页面的创建者所以我不确切知道它是如何构造的.

即使iCloud钥匙链填写表格也会很酷……但也许我问的太多了!

解决方法 您可以使用JavaScript来执行此 *** 作.

如果您检查页面,您可以很容易地发现文本输入字段的ID(expert_email和expert_password)并执行一些Js代码来填充它们.

实现UIWebVIEw委托的webVIEwDIDFinishLoad方法,如下所示:

Objective-C的:

- (voID)webVIEwDIDFinishLoad:(UIWebVIEw *)webVIEw {    //fill data    Nsstring *email = @"[email protected]";    Nsstring *password = @"mypassword";    Nsstring *fillDataJsCall = [Nsstring stringWithFormat:@"document.getElementByID('expert_email').value = '%@';document.getElementByID('expert_password').value = '%@';",email,password];    [webVIEw stringByEvaluatingJavaScriptFromString:fillDataJsCall];    //check checkBoxes    [webVIEw stringByEvaluatingJavaScriptFromString:@"document.getElementByID('expert_remember_me').checked = true; document.getElementByID('expert_terms_of_service').checked = true;"];    //submit form    dispatch_after(dispatch_time(disPATCH_TIME_Now,1 * NSEC_PER_SEC),dispatch_get_main_queue(),^(voID)    {       [webVIEw stringByEvaluatingJavaScriptFromString:@"document.forms[\"new_expert\"].submit();"];    });}

迅速:

func webVIEwDIDFinishLoad(webVIEw: UIWebVIEw) {    // fill data    let savedUsername = "USERname"    let savedPassword = "PASSWORD"    let fillForm = String(format: "document.getElementByID('expert_email').value = '\(savedUsername)';document.getElementByID('expert_password').value = '\(savedPassword)';")    webVIEw.stringByEvaluatingJavaScriptFromString(fillForm)    //check checkBoxes    webVIEw.stringByEvaluatingJavaScriptFromString("document.getElementByID('expert_remember_me').checked = true; document.getElementByID('expert_terms_of_service').checked = true;")     //submit form    dispatch_after(dispatch_time(disPATCH_TIME_Now,Int64(1 * NSEC_PER_SEC)),dispatch_get_main_queue()){        webVIEw.stringByEvaluatingJavaScriptFromString("document.forms[\"new_expert\"].submit();")    }}

这应该填写您的信息.但是,如果此网站将来更改其结构,则此代码很容易破解.当您处理自己的页面时,这种执行Js代码的方法更合理.

编辑:

我更新了代码以演示如何选中复选框以及如何提交表单.

一些说明:

>当登录失败时,页面会重新加载,所以你最终会无休止地调用webVIEwDIDFinishLoad,因为你试图反复提交,所以你可能想要添加一些逻辑来打破这个案件.这就是为什么我在提交之前提出延迟以便能够看到正在发生的事情.>除了前一点中的信息之外 – 在登录成功后(当重定向到下一页时),您将会收到对webVIEwDIDFinishLoad的调用,因此您可能希望在加载不同页面时引发标志(执行登录)仅在登录页面上尝试).

总结

以上是内存溢出为你收集整理的ios – 在UIWebView中自动填充用户名和密码全部内容,希望文章能够帮你解决ios – 在UIWebView中自动填充用户名和密码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存