当前位置: 首页 > news >正文

【iOS免越狱】利用IOS自动化WebDriverAgent实现自动直播间自动输入

1.目标

由于看直播的时候主播叫我发 666,支持他,我肯定支持他呀,就一直发,可是后来发现太浪费时间了,能不能做一个直播间自动发 666 呢?于是就开始下面的操作。

2.操作环境
  • iPhone一台

  • WebDriverAgent

  • mac 安装 Xcode

 3.流程

首先安装WebDriverAgent ,安装教程请看上一篇

web-driver-agent_appium-实现自动点击+滑动屏幕icon-default.png?t=N7T8https://ccccc.blog.csdn.net/article/details/134053551

 界面输入文本 api

[[FBRoute POST:@"/wda/keys"] respondWithTarget:self action:@selector(handleKeys:)],+ (id<FBResponsePayload>)handleKeys:(FBRouteRequest *)request
{NSString *textToType = [request.arguments[@"value"] componentsJoinedByString:@""];NSUInteger frequency = [request.arguments[@"frequency"] unsignedIntegerValue] ?: [FBConfiguration maxTypingFrequency];NSError *error;if (![FBKeyboard typeText:textToType frequency:frequency error:&error]) {return FBResponseWithStatus([FBCommandStatus invalidElementStateErrorWithMessage:error.descriptiontraceback:nil]);}return FBResponseWithOK();
}

 

实现源码

+ (BOOL)typeText:(NSString *)text error:(NSError **)error
{return [self typeText:text frequency:[FBConfiguration maxTypingFrequency] error:error];
}+ (BOOL)typeText:(NSString *)text frequency:(NSUInteger)frequency error:(NSError **)error
{__block BOOL didSucceed = NO;__block NSError *innerError;[FBRunLoopSpinner spinUntilCompletion:^(void(^completion)(void)){[[FBXCTestDaemonsProxy testRunnerProxy]_XCT_sendString:textmaximumFrequency:frequencycompletion:^(NSError *typingError){didSucceed = (typingError == nil);innerError = typingError;completion();}];}];if (error) {*error = innerError;}return didSucceed;
}

方法已经找到,开始调用他

自己写一个 app,安装到手机

获取手机屏幕信息

+(void)window_size{NSLog(@"开始window_size: %@",@"-------------------");NSString* url = @"";url = [NSString stringWithFormat:@"http://127.0.0.1:8100/session/%@/window/size",iPhoneSessionId];[xddHttp reqWithMethodxdd2:url Method:0 HTTPBody:@"" Block:^(NSURLResponse *  response, NSDictionary *  data) {NSLog(@"window_size结果: %@",data);
//        [0]    (null)    @"width" : (long)414
//        [1]    (null)    @"height" : (long)736iPhoneWidth  = [data[@"value"][@"width"] longLongValue];iPhoneHeight = [data[@"value"][@"height"] longLongValue];}];}

 调用输入

+(void)element_value:(NSString*)text
{NSLog(@"开始输入: %@",@"-------------------");NSString* url = @"";url = [NSString stringWithFormat:@"http://127.0.0.1:8100/session/%@/element/38CB6A3B02B28FAFB0754B03D12AA7646ACEA558/value2",iPhoneSessionId];//1// url = [NSString stringWithFormat:@"http://127.0.0.1:8100/session/%@/wda/keys",iPhoneSessionId];//2NSString*body = @"";body = @"{\"text\":\"123好hao\"}";//1body = @"{\"value\":[\"123好hao\\r\\n\"],\"frequency\":10}";//2body = [NSString stringWithFormat:@"{\"text\":\"%@\"}",text];[xddHttp reqWithMethodxdd2:url Method:1 HTTPBody:body Block:^(NSURLResponse * _Nonnull response, NSDictionary * _Nonnull data) {NSLog(@"输入结果: %@",data);}];
}+(void)element_value{[self element_value:@"123好hao"];
}

 开启定时器,实现自动发送

+(void)myTimers{userarr = [self testArr];dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{// 在这里执行你的任务//[self goo:nil];});myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(goo:) userInfo:nil repeats:YES];}

 点击屏幕的输入框,然后输入文字

+(void)goo:(NSTimer *)timer{NSString*msgText = [xddCode getinfo:@"sendText"];NSString*msgTextKu = userarr[sendCount];NSString*text = [NSString stringWithFormat:@"%@%@\\r",msgText,msgTextKu];myAlertController.message=[NSString stringWithFormat:@" [%d / %lu] %@_%@",(sendCount+1),(unsigned long)userarr.count,msgText,msgTextKu];sendCount = sendCount + 1;NSString*url = [NSString stringWithFormat:@"http://127.0.0.1:8100/session/%@/wda/touch/perform",iPhoneSessionId];NSString*body = @"";body = @"{\"actions\":[{\"action\":\"tap\",\"options\":{\"x\":131,\"y\":248}}]}";//点击body = @"{\"actions\":[{\"action\":\"tap\",\"options\":{\"x\":131,\"y\":248}}]}";//点击body = [NSString stringWithFormat:@"{\"actions\":[{\"action\":\"tap\",\"options\":{\"x\":50,\"y\":%ld}}]}",iPhoneHeight-50];[xddHttp reqWithMethodxdd2:url Method:1 HTTPBody:body Block:^(NSURLResponse *  response, NSDictionary *  data) {NSLog(@"点击结果: %@",data);NSString*msgTextKu = userarr[sendCount];NSString*text = [NSString stringWithFormat:@"%@%@%@\\r",msgText,msgTextKu,[xddCode getTime:@"ss"]];[self element_value:text];//输入文字}];}

实现效果

https://live.csdn.net/v/340697icon-default.png?t=N7T8https://live.csdn.net/v/340697

web-driver-agent_appium自动输入

相关文章:

【iOS免越狱】利用IOS自动化WebDriverAgent实现自动直播间自动输入

1.目标 由于看直播的时候主播叫我发 666&#xff0c;支持他&#xff0c;我肯定支持他呀&#xff0c;就一直发&#xff0c;可是后来发现太浪费时间了&#xff0c;能不能做一个直播间自动发 666 呢&#xff1f;于是就开始下面的操作。 2.操作环境 iPhone一台 WebDriverAgent …...

Python基础入门例程28-NP28 密码游戏(列表)

最近的博文&#xff1a; Python基础入门例程27-NP27 朋友们的喜好&#xff08;列表&#xff09;-CSDN博客 Python基础入门例程26-NP26 牛牛的反转列表&#xff08;列表&#xff09;-CSDN博客 Python基础入门例程25-NP25 有序的列表&#xff08;列表&#xff09;-CSDN博客 目录…...

乌班图 Linux 系统 Ubuntu 23.10.1 发布更新镜像

Ubuntu 团队在其官网上发布了Ubuntu 23.10.1 版本,这是目前较新的 Ubuntu 23.10(Focal Fossa)操作系统系列的第一个发行版,旨在为社区提供最新的安装媒体。Ubuntu 22.04 LTS(Focal Fossa)操作系统系列于 2022 年 4 月 21 日发布。 Ubuntu 23.10 LTS(长期支持版本)可用…...

Java金字塔、空心金字塔、空心菱形

Java金字塔 public class TestDemo01 {public static void main(String[] args){//第一个for用于每行输出 从i1开始到i<5,总共5行for(int i1;i<5;i){//每行前缀空格&#xff0c;这个for用于表示每行输出*前面的空格//从上面规律可得,每行输出的空格数为总层数&#xff0c…...

前端 | (十四)canvas基本用法 | 尚硅谷前端HTML5教程(html5入门经典)

文章目录 &#x1f4da;canvas基本用法&#x1f407;什么是canvas(画布)&#x1f407;替换内容&#x1f407;canvas标签的两个属性&#x1f407;渲染上下文 &#x1f4da;绘制矩形&#x1f407;绘制矩形&#x1f407;strokeRect时&#xff0c;边框像素渲染问题&#x1f407;添加…...

206.反转链表

206.反转链表 力扣题目链接(opens new window) 题意&#xff1a;反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 双双指针法&#xff1a; 创建三个节点 pre(反转时的第一个节点)、cur(当前指向需要反转的节点…...

SpringBoot项目从resources目录读取文件

SpringBoot 从 resources 读取文件 使用 Spring 给我们提供的工具类来进行读取 File file org.springframework.util.ResourceUtils.getFile("classpath:人物模板.docx");可能读取失败&#xff0c;出现如下错误&#xff1a; java.io.FileNotFoundException: clas…...

SQL实现根据时间戳和增量标记IDU获取最新记录和脱IDU标记

需求说明&#xff1a;表中有 id, info, cnt 三个字段&#xff0c;对应的增量表多idu增量标记字段和时间戳字段ctimestamp。增量表中的 id 会有重复&#xff0c;其他字段 info、cnt 会不断更新&#xff0c;idu为增量标记字段&#xff0c;ctimestamp为IDU操作的时间戳。目的时要做…...

京东数据平台:2023年9月京东智能家居行业数据分析

鲸参谋监测的京东平台9月份智能家居市场销售数据已出炉&#xff01; 9月份&#xff0c;智能家居市场销售额有小幅上涨。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年9月&#xff0c;京东平台智能家居的销量为37万&#xff0c;销售额将近8300万&#xff0c;同比增…...

计算两个时间之间连续的日期(java)

背景介绍 给出两个时间&#xff0c;希望算出两者之间连续的日期&#xff0c;比如时间A:2023-10-01 00:00:00 时间B:2023-11-30 23:59:59,期望得到的连续日期为2023-10-01、2023-10-02、… 2023-11-30 Java版代码示例 import java.time.temporal.ChronoUnit; import java.tim…...

Kali Linux:网络与安全专家的终极武器

文章目录 一、Kali Linux 简介二、Kali Linux 的优势三、使用 Kali Linux 进行安全任务推荐阅读 ——《Kali Linux高级渗透测试》适读人群内容简介作者简介目录 Kali Linux&#xff1a;网络与安全专家的终极武器 Kali Linux&#xff0c;对于许多网络和安全专业人士来说&#x…...

Leetcode—101.对称二叉树【简单】

2023每日刷题&#xff08;十九&#xff09; Leetcode—101.对称二叉树 利用Leetcode101.对称二叉树的思想的实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool isSa…...

判断是否工作在docker环境

判断是否工作在docker环境 方式一&#xff1a;判断根目录下 .dockerenv 文件 docker环境下&#xff1a;ls -alh /.dockerenv , 非docker环境&#xff0c;没有这个.dockerenv文件的 注&#xff1a;定制化比较高的docker系统也可能没有这个文件 方式二&#xff1a;查询系统进程…...

文件上传学习笔记

笔记 文件上传 文件上传是指将本地图片&#xff0c;视频&#xff0c;音频等文件上传到服务器&#xff0c;供其它用户浏览或下载的过程 文件上传前端三要素 : file表单项 post方式 multipart/from-data 服务端接收文件 : 用spring中的API : MultipartFile 要想文件名唯一 …...

【GitLab CI/CD、SpringBoot、Docker】GitLab CI/CD 部署SpringBoot应用,部署方式Docker

介绍 本文件主要介绍如何将SpringBoot应用使用Docker方式部署&#xff0c;并用Gitlab CI/CD进行构建和部署。 环境准备 已安装Gitlab仓库已安装Gitlab Runner&#xff0c;并已注册到Gitlab和已实现基础的CI/CD使用创建Docker Hub仓库&#xff0c;教程中使用的是阿里云的Docker…...

GitLab(2)——Docker方式安装Gitlab

目录 一、前言 二、安装Gitlab 1. 搜索gitlab-ce镜像 2. 下载镜像 3. 查看镜像 4. 提前创建挂载数据卷 5. 运行镜像 三、配置Gitlab文件 1. 配置容器中的/etc/gitlab/gitlab.rb文件 2. 重启容器 3. 登录Gitalb ① 查看初始root用户的密码 ② 访问gitlab地址&#…...

[100天算法】-数组中的第 K 个最大元素(day 54)

题目描述 在未排序的数组中找到第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k 2 输出: 5 示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4 说明:你可以假设 k 总…...

每日一题411数组中两个数的最大异或值(哈希表、前缀树:实现前缀树)

数组中两个数的最大异或值(哈希表、前缀树&#xff1a;实现前缀树) LeetCode题目&#xff1a;https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/ 哈希表解法 本题使用哈希表方法主要运用到一个定理&#xff1a;异或满足算法交换律。即如果a^b c&#x…...

机场运行关键指标计算规则

一、总体指标 1.放行正常率 机场放行航班&#xff1a;计划出港时间在当天的已出港航班&#xff0c;航班任务为正班、加班、旅包 放行正常航班&#xff1a;实际起飞时间≤MAX[实际落地时间10分钟&#xff08;计划出港时间-计划进港时间&#xff09;&#xff0c;计划出港时间]3…...

基于元学习神经网络的类人系统泛化

Nature 上介绍了一个关于AI在语言泛化方面的突破性研究。科学家们创建了一个具有人类般泛化能力的AI神经网络&#xff0c;它可以像人类一样将新学到的词汇融入现有词汇&#xff0c;并在新环境中使用它们。与ChatGPT 相比&#xff0c;该神经网络在系统性泛化测试中表现得更好。 …...

力扣第322题 零钱兑换 c++ java 动态规划

题目 322. 零钱兑换 中等 相关标签 广度优先搜索 数组 动态规划 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组…...

uniapp 子组件内使用定时器无法清除

涉及到的知识点&#xff1a;1.ref绑定在组建上获取组件实例。2.emit逆向传值&#xff0c;不需要点击触发&#xff0c;watch监听即可。 需求&#xff1a;在父页面的子组件定时发送请求&#xff0c;离开父页面就停止&#xff0c;再次进入就开启。 问题&#xff1a;在父页面的子…...

加载动态库的几种方式

静态加载、动态加载和延迟加载 dll加载方式大致可以分为3类&#xff1a;静态加载、动态加载和延迟加载 1.静态加载&#xff0c;dll的加载发生在程序main函数启动前。 2.动态加载&#xff0c;使用LoadLibrary或者LoadLibraryEx来加载一个dll。当dll加载成功时&#xff0c;你会…...

视频转序列图片:掌握技巧,轻松转换

随着社交媒体和视频平台的日益普及&#xff0c;视频已成为我们生活中不可或缺的一部分。有时&#xff0c;我们需要将视频转换为图片序列&#xff0c;例如制作GIF动图或提取视频中的特定画面。现在一起来看云炫AI智剪如何将视频转换为序列图片&#xff0c;并轻松实现转换。 操作…...

python 数据挖掘库orange3 介绍

orange3 是一个非常适合初学者的data mining library. 它让使用者通过拖拽内置的组件来形成工作流。让你不需要写任何代码就可以体验到数据挖掘和可视化的魅力。 它的桌面如下&#xff0c;这里我创建了 3 个节点&#xff0c;分别是数据集、小提琴图&#xff0c;散点图 其中 …...

Android和JNI交互 : 常见的图像格式转换 : NV21、RGBA、Bitmap等

1. 前言 最近在使用OpenCV处理图片的时候&#xff0c;经常会遇到需要转换图像的情况&#xff0c;网上相关资料比较少&#xff0c;也不全&#xff0c;有时候得费劲老半天才能搞定。 自己踩了坑后&#xff0c;在这里记录下&#xff0c;都是我在项目中遇到的图像转化操作&#xf…...

AndroidAuto 解决连接手机启动AA屏闪一下问题

AndroidAuto一般在AndroidManifest.xml注册的Activity配置过滤监听特定手机的USB插拔启动AA <activityandroid:name=".sink.ui.MainActivity"android:configChanges="keyboard|keyboardHidden|uiMode"android:windowSoftInputMode="stateHidden&qu…...

jbase实现业务脚本化

经过晚上和早上的努力&#xff0c;终于补上框架最后一块了&#xff0c;业务脚本侦听变化后自动编译jar包和调用&#xff0c;实现维护成本低&#xff0c;开发效率高的框架的基本体系。 实现自动编译jar包的类 package appcode;import org.w3c.dom.Document; import org.w3c.do…...

【安全】Java幂等性校验解决重复点击(6种实现方式)

目录 一、简介1.1 什么是幂等&#xff1f;1.2 为什么需要幂等性&#xff1f;1.3 接口超时&#xff0c;应该如何处理&#xff1f;1.4 幂等性对系统的影响 二、Restful API 接口的幂等性三、实现方式3.1 数据库层面&#xff0c;主键/唯一索引冲突3.2 数据库层面&#xff0c;乐观锁…...

基于设深度学习的人脸性别年龄识别系统 计算机竞赛

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习机器视觉的…...