OC JS交互(通常情况下,如果网页写得正规的话,是可以正常交互的,之前就遇到后台写h5始终拿不到事件,元素也拿不到,更别说交互了,真是奇了怪了)
自动填充表单
@"document.getElementById('loginid').value = '这里填入你的用户名';document.getElementById('userpassword').value = '这里填入你的密码';";
根据ID拿到输入用户名的输入框并给值
根据ID拿到输入密码的输入框并给值
自动点击登录按钮
@"document.getElementById('login').click()"
根据ID获取登录按钮这个元素,并调用其点击事件click()
如果有特别限制的话,我们需要先访问一次特定网址,并存入cookie
NSURL * cookieHost = [NSURL URLWithString:@"http://mmmmmm/login/Login.jsp"];
NSHTTPCookie * cookie = [NSHTTPCookie cookieWithProperties:
[NSDictionary dictionaryWithObjectsAndKeys:
[cookieHost host],NSHTTPCookieDomain,
[cookieHost path],NSHTTPCookiePath,
@"COOKIE_NAME",NSHTTPCookieName,
@"COOKIE_VALUE",NSHTTPCookieValue,nil]];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
退出登录里为了,不受其他干扰,要清掉cookie
NSHTTPCookieStorage * myCookie = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie * cookie in [myCookie cookies])
{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
} NSString * path = NSHomeDirectory();
NSString * filePath = [path stringByAppendingPathComponent:@"/Library/Cookies/Cookies.binarycookies"];
NSFileManager * manager = [NSFileManager defaultManager];
[manager removeItemAtPath:filePath error:nil];
开始发起请求,附带上cookie去请求,伪装成特定User-Agent,referer等
NSURL * url = [NSURL URLWithString:@"http://mmmmm/login/Login.jsp"];
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
NSArray * cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
[request setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36" forHTTPHeaderField:@"User-Agent"];
[request setValue:@"http://mmmmmm" forHTTPHeaderField:@"Origin"];
[request setValue:@"http://mmmmm/login/Login.jsp" forHTTPHeaderField:@"Referer"];
[request setHTTPMethod:@"GET"];
[request setHTTPShouldHandleCookies:YES];
[request setAllHTTPHeaderFields:headers];
如果要求在特定的网络环境下才能访问网址,就得处理判断了,当然这种情况下,只能受限了
NSString *ipString = [self deviceIPAdress][@"en1/ipv4"];
ipString = ipString ? ipString : [ self deviceIPAdress][@"en0/ipv4"]; if ([self canLoadNetFrom:ipString]) {
[self.webView loadRequest:request];
} else {
[SVProgressHUD showErrorWithStatus:@"当前网络环境不支持登录"];
}
更新:要切换不同账户密码怎么办,重新写程序?这里用Settings.bundle

然后直接用偏好去取就是了
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
NSString *accout = [user stringForKey:@"name_preference"];
NSString *psd = [user stringForKey:@"psd_preference"];
OC JS交互(通常情况下,如果网页写得正规的话,是可以正常交互的,之前就遇到后台写h5始终拿不到事件,元素也拿不到,更别说交互了,真是奇了怪了)的更多相关文章
- @Java web程序员,在保留现场,服务不重启的情况下,执行我们的调试代码(JSP 方式)
一.前言 类加载器实战系列的第六篇(悄悄跟你说,这篇比较水),前面5篇在这里: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 了不得, ...
- ArcGIS小技巧——多图层情况下交互显示效果
在使用ArcMap处理数据的过程中,通常需要对比不同图层之间的差异.或者查看影像配准情况,这时我通常会怀念ENVI中的强大的拉幕显示.闪烁.亮度和透明度显示工具...... 直到有一天,闲着没事干捣鼓 ...
- (数据科学学习手札106)Python+Dash快速web应用开发——回调交互篇(下)
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- 把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)
.继上一篇随笔,链接点我,解决手机端cookie的问题. .上次用cookie+redis实现了session,并且手机浏览器可能回传cookies有问题,所以最后用js取出cookie跟在请求的ur ...
- js+jquery+html实现在三种不通的情况下,点击图片放大的效果
js+jquery+html实现在三种不通的情况下,点击图片放大的效果. 三种情况分别是:图片的父元素宽高固定; 图片的宽高固定; 图片的父元素宽固定,高度不固定 第一种情况:图片的父元素宽高固定 ...
- 简单对比一下不同Windows操作系统在相同硬件配置的情况下浏览器js引擎的性能
最近部门进行Windows客户端的测试产品单点性能, 感觉不在通的windows版本以及浏览器内核的情况下性能可能有差异, 也一直没有找到一个比较好的对比工具, 今天用chrome的控制台简单测试了下 ...
- 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...
- AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服 ...
- 如何设置iframe高度自适应,在跨域的情况下能做到吗?
在页面上使用iframe来动态加载页面内容是网页开发中比较常见的方法.在父页面中给定一个不带滚动条的iframe,然后对属性src指定一个可加载的页面,这样当父页面被访问的时候,子页面可以被自动加载. ...
随机推荐
- python版本升级
python 2.7.11,下载链接 https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz,如下载速度太慢可在豆瓣pypi搜索下载ht ...
- XML 序列化与反序列化
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
- android Dialog实例
Dialog类 public class DialogUtil { public static Dialog EditDialog(Activity context,View view){ final ...
- ubuntu下网络IP设置相关命令
一.使用命令设置ubuntu的ip地址 1.修改配置文件blacklist.conf禁用IPV6: sudo vi /etc/modprobe.d/blacklist.conf 2.在文档最后添加 b ...
- This text field does not specify an inputType or a hint
android开发过程中突然发现的warning,EditText 报出 “This text field does not specify an inputType or a hint” 原因: ...
- android 项目中出现红色感叹号的解决方法
问题原因]:工程中classpath中指向的包路径错误 [解决办法]:右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选项卡找到 Li ...
- log4j 不同模块输出到不同的文件
1.实现目标 不同业务的日志信息需要打印到不同的文件中,每天或者每个小时生成一个文件.如,注册的信息打印到register.log,每天凌晨生成一个register-年月日.log文件, 登录信息的日 ...
- 【转】What is an SDET? Part 2 – Skill Matrix of SDET
What is an SDET? Part 2 ---- Skill Matrix of SDET (Instead of naming it as part 2 of What is an SDET ...
- mysql常用基本操作
mysql常用操作 查看都有哪些库 show databases; 查看某个库的表 use 库名; show tables; 查看表的字段 desc 表名; 当前是哪个用户 select user() ...
- gdb脚本
一.简介 作为UNIX/Linux下使用广泛的调试器,gdb不仅提供了丰富的命令,还引入了对脚本的支持:一种是对已存在的脚本语言支持,比如python,用户可以直接书写python脚本,由gdb调用p ...