在UIWebView iOS中自动填写并提交HTML表单和视图

时间:2011-09-19 01:52:23

标签: iphone html forms post uiwebview

我正在尝试在iPhone和iPad上自动填写并提交HTML表单,然后在UIWebView中查看生成的页面。

示例:有一个网站可以为我的大学的膳食计划添加资金,它要求您先输入您的学号,按提交,输入密码,按提交,然后在此之后显示您的余额。

我正在尝试创建一个应用程序,让您将信息保存在其中,按GO,然后在后台填写已保存的学号,点击提交,等待生成的页面加载,然后输入密码,按提交,然后最后显示带有余额的结果页面。

我已多次尝试提交表单,但无法在之后的UIWebView中显示它们。

有没有人有任何想法或解决方案?

感谢所有帮助!对不起,如果这是一个愚蠢的问题。

2 个答案:

答案 0 :(得分:2)

你可以用JavaScript做到这一点。使用UIWebView的-stringByEvaluatingJavaScriptFromString:方法输入文本,然后单击按钮。

答案 1 :(得分:2)

对于那些需要代码的人,我希望这3种方法可以提供帮助:

此方法将填充用户名字段:

- (void)completeUserFieldsForWebView:(UIWebView *)webView withUsername:(NSString *)username {

    NSString *loadUsernameJS =
    [NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='email']\"); \
     for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", username];
    NSString *loadText =
    [NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='text']\"); \
     for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", username];
    [webView stringByEvaluatingJavaScriptFromString: loadUsernameJS];
    [webView stringByEvaluatingJavaScriptFromString: loadText];

}

这个将填写密码字段:

- (void)completePasswordFieldsForWebView:(UIWebView *)webView withPassword:(NSString *)password {

    NSString *loadPasswordJS =
    [NSString stringWithFormat:@"var passFields = document.querySelectorAll(\"input[type='password']\"); \
     for (var i = passFields.length>>> 0; i--;) { passFields[i].value ='%@';}", password];
    [webView stringByEvaluatingJavaScriptFromString: loadPasswordJS];

}

提交表格:

- (void)clickOnSubmitButtonForWebView:(UIWebView *)webView {

    NSString *performSubmitJS = @"var passFields = document.querySelectorAll(\"input[type='submit']\"); \
    passFields[0].click()";
    [webView stringByEvaluatingJavaScriptFromString:performSubmitJS];

}