粉丝566获赞165

今天我用引刀来给大家制作一个梦幻西游手游的一个辅助的功能,呃,我们这个梦幻西游手游是一个安卓版本,我这个是温度的十一,温度的十一有自带一个安卓的虚拟机,也就是我们的 wsa, 这样的话我们只要把它安装上,我们就可以使用,也就是这个窗口,我们现在打开我们的引刀,我们新建应用,我们选择 pc 自动化原用, 在这里我们要选择软件桌面,软件自动化我们要第一步先获取下对象的窗口, 这里我们选择窗口标题或者类型,我们的窗口标题可以选择,我可以写我们的梦幻梦幻西游,我们来看一下他能不能调取出来, 我们发现他调取出来了,如果你发现这样他调取不出来,你可以在这里添添加,点击添加窗口类型,我们点击一下窗口类型,我们下拉,我们会发现他有一个我们的这个安卓包,你点击他就可以,我们点击,这样我们来确定,我们现在来运行一下,看看他能不能把这个货取出来, 我们发现他也已经把它获取出来,也就是说我们这个窗口标窗口标题,或者说是我们的类型是都可以的。那么我们接下来呢 就来获取下这个活动,那么我们有两种方式,一个就是我们的点击元素拖过来,点击元素,我们去元素铺里默认的捕捉的话, 我们会发现他这一个整框框,这个呢我们可以使用,我们的右边有下拉箭头,我们选择 cv 智能补补货模式的,我们补货一下, 点击他 ctrl 加单机,他就会自动探测梦幻西游,我们获取的时候发现他不支持此类型的获取目标,那么他可能就是不支持,那么我们使用另一种方式,这里有一个 鼠标键盘啊,我们现在来使用我们的点击图像的方式来获取它,首先我们把它拖过来,我们去图像过来选择一下, 我们现在图像库是空的,我们可以选择一下,我们把这个活动来获取下。好,我们现在来交演一下。 哎,他现在已经交演出来了,那么我们点击完成,这样的话,我们这个搜索范围呢,我们改一下,我们选择窗口对象,我们就是窗口,我们现在呢要点击什么呢?我们是中心点鼠标左键也没错, 也是单机,我们现在点击确定,我们来看一下能不能有这样的效果。哎,我们发现是可以的,他已经把我们的这个日常活动就是活动的界面给点开了,那么 如果说他直接给我们打开的话,他这个界面可能就直接是有一个这种类似这样的界面,无论是什么,我们随便打开一个,比如说我们的商场,他可能有这样的界面,那么他可能就找不到我们那个主界面,那么我们应该怎么办呢?我们来判断一下, 这里有一个条件判断这里有一个,如果图像存在放到这里,如果哪个图像存在呢?那当然是我们的这个活动的图像在的话,我们在我们就把它给 点击一下,但是如果不存在呢?好,我们这里有一个 ios, 如果不存在,我们应该怎么办呢?我们也在这里点击图像,我们看看我们,哎,我们先演判断一下吧,如果说是图像存在, 我们去选择一下我们这个叉,我们把这个叉叉给我们过去一下,如果这个叉叉存在,好,我们就点击它,我们现在呢再点击,我们点击元素放到这里, 我们不用补货新元素,我们是我们是那个点击图像 互相库存给我们点击差,好,我们现在点确定,我们现在点击,现在我们来看一下它能不能给我们关掉, 哎,他找着了,并且给我们把这个图像给关掉了,如果关掉的话,我们再把这个图像,如果这个图像存在,然后包括这个我们来给他放到那里过去一下,我们来把它粘到这里, 我们把这个一安的一幅,也因为这是一组,我们要一起把它放到这里,我们现在来看一下它可不可以,因为现在的话它已经是把我们这个界面是关掉了,我们现在呢让它再打开,我们来看一下, 好,现在是他已经给我们打开了,我们再点击运行,因为他现在打开界面,我们让他关掉运行再打开。好,接下来呢我们就点击师门任务 这个框框,我们也可以通过这个图像的方式来给大家打开。我们现在呢也要判断一下,如果我们的图像存在,或者说如果屏幕上存在某个文本, 但是我们的这个呢,他有一个限时免费的引擎,如果说他那个超过这个呢,他可能就会收费,所以说我们呢也可以选择他,也可以不选择我们的查找的文本呢,也就是我们看到的这个失门任务。 呃,如果你不使用这个,我们再使用这个图像的话,我们来看一下, 我们把这个点击图像放到这里,我们去那个图库 选择一下,我们添加元素,把那个关掉,我们现在再来添加一下,我会发现他这个失门任务呢,这里有有一些次数, 这个次数如果变了,他这个可能就匹配不到了,那么我们怎么做呢?我们可以把这个相相思,相思度呢给他大致的改一改,改低一点,也就是说他这个随便的这个数字变动呢是不影响他的,也可以也可以通过我们的那个图像识别的方式来 确定这个位置,我们点击确定好,我们现在呢他就可以点击这个图像,但是呢我们在点击之前呢,我还是建议大家做个判断啊,我们就是这个整个屏幕,我们选择这个窗口对象,我看我之前的这个啊,我们这个 也改成窗口对象,这个也改成窗口对象。如果图像存在,我们就把这个图像点击一下, 我们这个图像的目标呢,我们有给选择,我们来把这个,如果这个图像存在,我们就让他点击这个图像, 这个图像呢我们来看一下他能不能点击,我们运行一下,首先呢他应该会把这个窗口关掉, 然后再点击活动,然后点击我们的这个实名任务,哎,我们发现他点的中间,他点的中间呢并没有点击参加,我们会发现他把那个详情给我们给打开了,但是我们要点击右边这个,那么我们就要把这个中心中心点的位置被改一下,我们选择自定义, 这里有一个叉,我们把它点到右边来,我们现在来看一下效果。 哎,我发现他点的这个边边,他点他点到了这里,那么我们应该应该往左边偏一点,这个我们也是可以的,我们在这里有一个横向平移,如果他是正数的话,他就往右,也就说他从这里往右,如果说他是负数的话,他就往左,那么他现在是 在这里,那么我们就让他往左一点,左左一点我们就大概负到二十或者负十就可以,负十 主要左键,这样的话我们就可以了,我们把这边关了方便,然后我们现在点击运行,看看可不可以 首先点击活动,然后寻找我们的身份任务。好,我们现在是已经打开了这个界面,接下来呢我们就要因为他这个如果已完成的话,他是 不能点的,那我们就过去他这个选择,我们现在呢也要判断一下他如果包含这个选择,我们就点击他,我们不相互选择, 我们来看一下,好,我们来现在来教演。哎,他找到了,那么我们就点击完成这个呢,我们的搜索范围还是窗口对象, 现在我点确定,接下来呢我还是点击图像,如果图像存在呢,我们就点击,点击它搜索范围呢,我们点击重复一下。呃,这样说,我之前的那个呢,也可 可能点击错了,我这里有一个整个屏幕,把它改一下,改把它改成窗口对象,这样的话他就直在那个窗口里寻找。现在呢我们来看一下他会,会不会把我们那个选择一下,我们来看一下。哎,我们会发现他到这个界面呢,他又不一样了, 想名扬魔界得多加,他还是走了一圈,走了一圈还是点点了一下,好,我们现在呢发现他这个失明任务呢,只有一 是有这么个东西,他要点击这么一个标题,这个标题呢每天都不一样,但是我们为了做演示,我们就来把它获取下,我们呢 接下来呢我就不判断了,我就直接去点击图像,方便介绍大家时间。我这里呢也是整个窗口对象,去图像库选择添加 元素,我们的选择要做的事,是吧?我们就不,我们就只获取这块就可以看看能不能教研的到,哎,是可以的,现在呢我们就点击完成,哎,这样的话我们就可以了。 下来我们来看到一下这个窗口,我们点到我们的地图,我们看一下我们的长度,或者大雁塔里面,随便我们来看一下有没有效果。好,我们现在直行,这首先打开我们的界面,进行我们的活动参加。哎,我们发现一个问题,在这里有一个继续任务, 这就比较尴尬了,因为我们这个他是找不到这个继续任务的这个方式的,那么我们就要判断一下了,如果他存在这个他就点击, 如果他存在这个继续任务,我们就让他点击继续任务,我们呢这个也要做个判断,如果这个图像存在。好,我们去图像或选择一下,这里有一个继续任务,我们觉得你这个我过得不是很好, 我们现在交演可以获取到,我们现在等完成我们整个屏幕选择重复对象。好,我们的这个点击图像呢,我们来把它放到这里, 我们会发现我们这个做了判断他有一个好处,就是他一般不会出出现任何问题,比如我们这个问题他找不到那个图案的话,他就会出现问题,那么我们呃,为了他不报错吧,我还是把它改一下 好,我们把这个拖枪给拖进去。好,现在我们来再运行一下, 因为我们都是做了判断的话,他这个有些屏幕他就不用,他就可以跳过,哎,我们发现他已经自动开始自动巡入,名扬魔界得多加历练。我们发现他这里有一个问题,他这边执行完了以后, 他那边就停了,然后呢到这里呢?按理说他应该跳过场景,跳过场景的话他到这里 他应该在点这里,但是我们的呢执执行了一次,如果他存在呢?就如果他存在呢他就嗯执行,如果不存在呢,他就已经执行完,相当于是这边判断已经不存在了。那 那么我们应该怎么做呢?我们可以在这里呢就是做一个那个循环,就是入或者呢我们选择我们这个等待,我们在这里输入等,等待我们这里有一个等待图像,我们就把它拖到这里来, 如果说我们来看一下,如果他等待这个图像消失的话,我们来看一下我们的图像,比如说我们这个图像出现的话,就是我们看超出时长是多少秒,我们就等待等一下他看看能不能出现,然后就走到这里。 好,我们现在呢再跳到我们的这个长安城来,再执行一下我们的效果, 像明阳魔界得多加历练。哎,我们发现他现在就已经可以执行成功了,现在呢我们就可以做类似这种的辅助操作了。 那遇见这样的问题呢,就是比如这样的框框呢,我们应该也把它关掉,但是我们其实不用,我们呢接下来呢就只需要点击这里就可以。好,我们现在呢就我们的操作,我们的录像,我们来看一下, 把这个关掉,然后我们这里有一个点击图像,我们放到这里,我们来看一下我们这个图像点击哪里合合适呢?好,我就比如说这个,我们来点击一下,我们不断的循环来 点击他,就可以我们去图像部再添加一个元素,比如说对我们去吃门,吃门的这个 来看一下,我们这样的话能不能把它这样一个道。哎,那获取到了,我们现在点击完成,我们这个搜索内是在窗口中进行的,我们来看看进化,我们来点击一下,看看他能不能直行, 他这样会最多等待二十秒,二十秒的话时间是有点长的,一会呢我会把这段给稍微剪辑一下, 我们发现他点击了一下,点击了一下,嗯,导致那个图片呢是已经去掉了,但是呢我们这样的话,我们是要一直 是在不断的循环去点击他的,我们呢就是可以使用我们这个循环来去点击他,我们呢也可以选择无限循环,假设我们就来个无限循环吧,就给大家做个实验,做个示范,就可以 这样呢他会一直一直去判断,一直判断,一直判断,一直判断,但是遇到这里呢就是二十秒,我们呢这个呢这个等待图像呢,我们就先把它禁用掉,接下来我们再执行一下, 这样的话你可以在那里面去不断的去做那个教练,看看他就是去寻找你可以设置好的一个方式,让他放到这, 因为我们那个出现了一些问题,所以他会报一个指令的错误,因为他没有找着这个图像,这个呢也可以做一个判断, 然后更多的呢就需要你们自己去想办法去完善了,大致就是这样子操作的, 今今天的演示就到这里了。

连上手机以后先点,再来一组,这不是得再来一组吗?频繁五次抓一个题目,他就得执行五次抓一个题目,这里面他根据题型有判断是做多选的这种抓,还是做其他单选或者判断的这种抓具体的逻辑刚才咱们 调了半天也写的差不多了,现在来再次验证一下这个成果应该十一十二一二三四五,如果顺利的话会抓五个,再往下一步发展的。决定要不要抓这个题目之前,我先看一看我题库里有没有这个题, 如果有的话,我是不是就不用再抓了,我就应该知道答案了,我就应该去选一下的答案。这个只抓二十几个题,想碰到那个正确的可能还是有点难度,又报错了。又报错的话,得看看什么情况。没到 到最后一个题,这个他蒙了个 a, 是不是意思是蒙抓单选啊?单选这里出的问题, 那是十一、十二十三。抓到第四个题了,我确定了,可以把那个题号前后都打印出来来试一试。比如选择前的题号拿了以后就多一些输出信息,方便来判断。 那这里是选择前的题号,那当然,我不知道他是选择前的题号,所以要不就放列表吧,选择前题号后面放一个选择前的题号,把它给复制上。 拿了选择后的题号以后呢?再来打印日志,点亮以后就开始选择后的题号,多一个 输出信息。现在出错了以后,咱们这样子来拆分,流程快,他就会有一些优势。你看现在是这个题已经已经坏了, 但是他居然答案抓对了,是吧?那我就手动点一下下一题 mvp 没抓的就可以运行。这题目我觉得应该也靠谱啊。表哥抓一个题目他能能能上去吗? 进去了没?直接跳到最后还没有报错,是这种情况,你得再来一组,多来几组,把这个 bug 都调稳了,然后对这个东西再循环一下。就不是循环,抓一个停稳就可以循环一百次, 再来一组啊。这个东西应该叫再来一组。好,那就再运行一下,循环五次的抓一个题目,再再运行这个 一组。刚才是到十五,那十六六七八九十,应该到二十整五的。嗯,还挺好,现在就得调一调 bug, 调的稳定了就可以继续往下走。 刚才那个确定点不到,有可能是太快了,或者别的什么情况,这里得调一调他的顺序关系吧应该。那个问题我觉得不是太大,主体的流程应该就建起来了,还缺一个最关键的逻辑,就不能一上来就就抓啊。现在题目少,这个问题问题不大,报错了 老元素又这个问题,这就得分析了,这个肯定是哪里写错了,看一下这个题目抓到了,知道哪里写错了,少写了一个,点击下一题,应该是这样子,刚才是抓完多选的,我们点了下一题,但是抓单选好像是 在那个测试快一点的,下一题就没有写这个点下一题你看抓多选,写入一个四角要点下一题的抓单选,你不写他不是碰到一个单选就得报错吗?那这个调掉了一个关键性的 bug, 下一题 遇到这个不够五个的,你就不能去运行一组了,去改这个五,改成二也不合适。你就这样 抓一个题目,手动运行,上两次让他让他过一下算了。这个是正常的程序,这个情况应该是比较少的,大部分情况就是应该程序可以一组一组的走掉。那得再来一次,等着他处理完。是 a b 多选,我有把握选错的 a b, 等程序正常结束。还没有结束,结束了好, a b 拿到了,还比较靠谱是吧?还比较靠谱的话 啊。刚才又改掉了一个关键的 bug, 我觉得再测一次没有问题,就可以多次运行,能选到第一个题目。题库里有的重复到有一个,咱们就结束今天的分享,不然这个时间就太长了。 画面切出来进行到第三个题啊,第二个题才上来,这个比我下午写的那个稳定。还是多写一点,这个思路更清楚一点。这里又出问题了,是不是最后一个题没有下一题?不是这个题他为什么不选呢?是你选他不应该蒙一个吗? 在手机单击下一题,那意思是刚才我知道了这个又是一个 bug, 和那个相关的一个 bug。 多选题我有把握选错,所以选一个一定能点到,确定抓完了一定能点到下一题,但是你看这个调 第二个题,选了 a, 然后点了确定,他直接跳到下一题了,他就没有下一题。咱们这里就简单处理一下更好的处理方法。你得判断一下到底到底应该是点下一题呢,就不用点。那那简单处理就是错误处理嘛, 忽略异常并继续执行这个不负责任的方法啊。但是他他应该有用啊。我这么选了一下,现在又尴尬了。又到第三个题,我得手动抓三次了,我每次调会都会经历这些,而这个过程呢,也还比较有意思。 这过程其实挺有意思的,比那个最后你想要的那个结果其实很有意思,因为你咱们是从最开始两行代码逐渐逐渐写成这个样子,并且对未来还有一定的想法和规划,是吧?还有啊,这个可以不断的优化,但是够用就行, 不要不要太累了。最后一个题问对了吗?好,他,他上去没?他没上去,他还得他还得最后检测一下上去了 现在那就是又完善了那个 bug 的地方,下一页那个 bug 的地方。那就应该是这次成功的可能性就会大一些,这次成功可能性会大一些,六七八九十。如果遇到单选能闷对和没有闷对的情况,他都能够 做一个不至于中断的这样的处理当然不是最好的处理方法。这差不多,这个就是需要需要闷的情况,这就是闷对了,也过去了。这个是肯定会选错的,除非题库里有,但是现在的逻辑题库里没写,所以说他还是会选错的,正常结束。呃, 这个逻辑好像是你必须全对才能拿得到积分啊。这个没拿到,一分都没拿到,闷的。那现在我就不闷了,我,我不闷了,我要在抓取之前来一点逻辑。那这个逻辑从哪改点了?再来一组以后,再抓一个题目里面得得写一点逻辑, 抓一个题目里面,拿到题型就拿了个题型,然后做分支去判断。其实那不行,除了拿这个题型,我还得再拿一个东西,是题目,我得看看是什么题目,我会做的话就做呗,是吧,好多的一个变量。是题目, 我就得判断这个题目我到底会不会怎么判断呢?这个题目我是知道的,我去读一下这列信息,看看他爱不在里面,如果在里面是不是就应该是会做的那个情况,会做的是不是 就应该找到他在哪个位置,把这个位置对应的答案给拿出来去循环这个答案就单选,也当多选, a 也要循环,循环一次, a, b, c, d 循环四次。呃,这里绑那个 excel 好了, 宝在抓单选多选里面都有啊,咱们去。嗯,当前的 excel 题目,拿到题目以后,激活当前的 excel, 然后读一下信息,读取 excel 内容,不是单元格。我想拿一列的信息,这个列名列 b, b 列,默认的把它存到 excel data 差不多,我写成 excel column 一列,这一列呢是题目这样写好一下题目的这一列,上次我读到了一个 变量,下面是可以判断一下在没在里面,如果在吧, 我就直接做了,否则我才会去看他是是不是多选。好像是这个逻辑啊,但是不一定行啊,这里继续写判断 条件,一个东西在不在另外一个东西里面。我拿到的这个题目,题目可以删掉两端空格,他应该是属于还是这个地方包含不包含。 好像是包含这个关系吗?我总觉得不一定是这里,我想用那个硬的操作辅助把它点亮了,这个是这样写,我这直接写一个逻辑表达,是后面就选成等于处,那这个地方写的话就写屏幕, 删掉两端空格,再印在后面那个变量里面。就是我读的那一列,叫做 excel colum 题目,这是一个异味数组,如果它在里面说明这个题目我说过,我就应该把它的 答读出来,那还是要读 excel 表下面的读取,读取 excel 内容。 行号,哈哈,行号得写一下,行号这个地方还得补一点拍摄的知识列名。我知道,你看我,我不想把它打开啊。类型,题目,三列就是第三列,第一列 这个读的是一个单元格的内容,那这儿就是,呃, excel 的 data, 我写着 excel 的 sale, 刚才写的是 excel call, 表示一列 excel sale 表示一个单元格,应该就是一个值 a n s answer 应该是字符的类型啊,问题不大。那就是这个还差一个行号的。这个行号怎么写呢?需要用一下刚才,这就不保留了, 然后再来寻一个 me 也是需要用到一个 lee from x bought in bot print 好,嗯,在这里想演示一下 u i bot 里的数字啊,拍到列表一二三四,比如说这样一个列表, 它可以输出什么呢? list 有一个 index 的方法,我要查三的话,你看看它的位置在哪,零一二这样数的,它的这是它的位置。如果 你后面还有一个三,取的还是前面这个,我我就先不考虑那么多复杂的情况,比如说题目抓虫啊,比如说单选的题目和双选的题目居然一样,一个题目一模一样,居然既可以是单选题,也可以是多选题, 还可能是判断题。这些奇奇怪怪的情况先不考虑,我就用一下这个 index, 但是你需要注意, index, 如果你看一它的 是从零开始数的,所以,嗯,这个地方要填,就是把它点亮,先选上那个 column 的题目,然后这是个 index, 一下, 里面的那个值呢?是网页上的那个题目,删不删两段空格可能关系不大,我就把它删上。这个东西能够定位网页上拿到的那个题, 题目在 excel 的题目的内列里位于哪个位置,但是这个位置是从零开始数的,你要写到这个行号里面,这是从一开始数的,所以加一应该就可以了。这个就是答案, 根据这个题目匹配情况,它所处的一个单元格的位置,你可以输出一下打印日志,输出一下这个 sale answer, 让它输出一下,但是仅仅输出是不够的,因为体量太小了,你收集过的那个题目 应该是有难度,所以说可能咱们不知道执行多久才能碰到那种情况,咱们碰到碰到一次就结束啊,但是你碰到了他不行啊,就这样,我让他弹个窗吧,弹窗碰到了钉,弹个窗咱们看 一下,然后给选择啊。选择逻辑也没写你,你要是没有收集到那个题目,也到不了选择那个地方 信息对话窗输入标记通知,应该是得对话窗才能能弹出按钮,是吧?写一下啊,找,呃,找到匹,匹配到这个题目,大概是这个意思,然后给一个确定窗,这个时候程序 不要选这个超时自动默认按钮,他应该能弹个窗给卡到这,那再相像这个逻辑,抓一个题目, 如果是哎找到的,把这个答案打印出来,那我觉得这个答案好像显示到这个窗口上,可能会好一些,是吧?匹配到这个题目这里写点东西,比如说先把答案写上,来个逗号,再把题目写上, 这个是题目的列,把这个写上就行。把这个题目写上就可以,这样子应该会好一些。看一下手机这边,现在就看运气了,这个不一定能碰的到,但是如果对这个程序有信心,可以继续分装。这是抓一个题目,这个是 来一组,那咱们可以流程叫把组流程这的这一堆放到再来一组里面。那我现在就一样的逻辑,再来一组,把这个复制一下就行。 主流程这再来一组的调用,那就是再来五组呗。我直接执行主流程,这看他能不能不能往下刷啊。点运行他就应该是会一个一个往下走,并且他做的时候应该点窗口,应该是影响不大的。 这个但是你不要在 excel 里操作太多,不要去设格式啊,特别是删除行那个可能会带影响比较大,如果只是滚动的话肯定没影响,点一下的话问题也不大啊。给我找到一个题目验证一下, 打开对话窗。哎,这个题应该找到的。这个应该是找到的一个题目。呃,做,哎,这一幕也也也选出来了。咱们去搜一下这个题目好简贴吧,你觉得这个像是一个找到的题目? 嗯,这个应该是选项吧,他真的找到了,但是这是找到了题目第一个有有可能这是一组,又开了一组,刚好找到了。报错了。 reading 打印日志看一下打印日志这里写的 excel answer 说的是这个报错了,这个能打出来。我知道了,对话框不能这样写,对话框这儿需要一个字符串。我,我这么写肯定不行啊。得得得,给他连接一下。 明白了,得这样写,这样写才能不报错。答案中间得加一点分割符啊。这个地方应该要写一个字符串,写一个数组类型不对,他该报错了, 没有影响。这是抓一个题目,现在呢,我继续运行,抓一个题目,这个题目他依然依然能够找到, 依然能够找到。正确答案,应该是这个逻辑,抓一个题目,点一下运行,该能找到。给我弹个窗,你看,共同富裕应该是 a a 吗?这不对,这怎么能是 a, 是这个题是吧?那 刚才选的不对吗?这个题是 a, 找到这个位置了,是 a, 那我把这个流程停掉,这个地方我就可以写写逻辑了。如果是 正确答案找到是 a, 现在这个 excel answer, 它是一个支付串,但是呢,我要把它转一下,我把它转成 list, 那是这样转循环 for each 的这种循环,循环的这个列表呢?我把它先选一下 excel 单元格的 answer, 但是把它转成 list 就行,不管你是 a a, b, 转成 list, 它就会变成一个列表的里面的 a b, 循环它就好了。 excel answer 这个,这个选项能行吗?看一下,没有再套别的选, 喜欢应该问题不大,你就用他默认的变量名,就应该可以选择,只不过选择这个逻辑写起来可能是个太友好。嗯,就是说他这个 item 等于 a 的时候,我就是 b 的时候,就点 b, 那到底有几种选项呢?继续写, l l e 符,普通的 l e 符, 这个是当前。如果只等于 b, 那是不是得把至少把 c 和 d 也写上,这就变成体力活了。 d 和比写上,然后中间应该做点击 click, 点击元素,点击屏幕,点击手机的元素嘛,然后元素我补过, a, b, c, d 给它选 上就好, a 把它复制, b, c 还会遇到 e, 遇到了再说。呃,单击 b 是吧?嗯, b 是在这儿选 b, e 和 a, a, b, c, d 都选上了。嗯,选了以后它应该这是找到的。选了以后应该点 确定,他应该能点个确定,那这个下面应该再点一个确定,找一下确定,点了确定以后,因为这个是正确答案,所以他一一定能到下一题,就不需要 多选收集,也不需要单选收集。所以我感觉这个地方写一个 l e 服,应该写 l e 服,把 l e 服这个条件写上去, 就是题目等于多选,把它给删了, at e 符干了。 l e 符写上题目等于多选,它就表示好长抓一个题目,这个要不要再分到别的流程?快点连上,抓一下题型跟题目。我读一下 excel 的 题目的这一列,如果题目在 excel 里有,就读一下那个匹配到的那个题目对应的答案,把它存到 excel answer 里面,然后打印出来, 打印对话框信息提示一下,知道这是找到的,然后咱们手动点一下,确定以后,它在循环里面去选 a, b, c, d, 呃,还有个 e 没写,你碰到 e 还没有抓 e 选项的元素。 呃,这是,呃,循环着衣服十五条指令不如过幽默, 否则如果是多选,那就是配套就选,剩下的都是匹配不到的,才考虑多选的时候怎么抓,单选的时候怎么抓。那来验证一下,这个题目应该是能匹配到的那种情况。点下运行 弹窗啊,这个 a, 然后能 a 是吧?点上确定啊,确定程序能正常的结束。 那这是我想要的一个逻辑验证好了以后,那个弹窗可以注视掉,继续让他跑,这个时候就会一边选一边抓,如果程序够稳定,你让他循环再来一组,这个事情循环上很多组,他就他就逻辑写对, 对的话啊,就是可以一把过,但是也不好过,可能会出别的问题。那我把手动把这个抓一一个题目三四五点掉以后,我就开上很多组让他跑,看出出 bug, 大大概这样子,然后咱们就去睡觉去,还得再点两组,点击元素,手机也没报错是吧? 我改一下。遇到那个找到题目的不要弹窗,给我弹个消息,让我知道一下这个是 有成果的。这个是我这个遇到过的题目,这样子也比较好。那就是如果有 这个选之前应该会打开信息对话框,不要对话,你不要对话了,你就给我消息来一个就行了。对话框里面不要选这种对话的,就是消息通 知,消息通知大概大概是这个吧,在顶部来个消息通知就好了。消息通知的内容呢?还把这个给写上。消息通知顶部把它给选上,它的高级是三秒是吧?我怕三秒看不到。我写成五秒。 这个流程如果顺利的话呢,他就可以可以跑了,但是这个明信写上五十组,他能能不能跑下去我就不太确定了。 那为了看全这个信息,从主流城这开始跑,手机是在再来一组的状态,我点了运行,把这个最小化等着吧。 其他的这是控制在手机上,我只要不去折磨这个 excel 表格,应该不至于打扰到它,只滚动一下就不影响那下面,下面就差不多了, 这个程序应该就没啥了。我觉得如果顺利,因为这是我第二次写,白天我刚刚写了一下,好像没有这个逻辑写的好,出了好多奇奇怪怪的问题。我又写了一次,就是又一个号又写了一次,发现还还 ok。

我们今天通过拼多多小程序啊店铺搜索这样一个例子啊,来看一下如果功课解析的日志数据里面含有 jason 的字符串,这种情况我们应该要如何处理成为一个啊标准的二位数据。 然后我们先打开拼多多的啊小程序,然后可以看到只要打开功课这个接受请求的界面,就会有不断有请求进来, 然后我们随便搜一个商品,这是我之前已经搜过的,然后我们是要看嗯店铺,所以我们再把这里商品切换为店铺,然后这时候请求就都出来了, 然后我们用 ctrl 加 f 调出搜索框啊搜索一下店铺的名字,然后包含这个店铺名词的接口,然后就会出现橙色,然后 啊弹窗那个小弹提示也会提醒你有多少个接口有这个内容。然后根据前面这个 tap, 我们上右边来选择是 h t m r 还是 jason 格式,然后呢,我们看到这是 h t m l 的,我们就在这里搜索一下, 然后搜到之后寻找他的副节点,然后一直找到最上层的一个节点,我们来看一下数据,然后用是提前已经嗯 解析过这个网页,看过了,就是他的一页的接口和后面的接口是不在一个,呃,是不在同一个接口的。嗯,很多网网页网站可能存在这种情况,像是小红书 嗯的视频列表也是它的第一页和后面的页码是不在同一页的,所以就是有些人可能会说,我 的小红书的视频为什么啊少了,就是因为这个原因,他的第一页和后面的页码是不在一个接口的,所以我们嗯配置的时候,如果想要第一页的数据,那我们就要两个接口都配置, 然后我们可以看一下这个拼多多,他也是同样的情况,然后他的第一页是 h t m l 的,然后后面的页码是杰森的,然后因为他啊第一页可能要加载整个网页的一个框架,所以他就用的是 h t m l 的,后面呢只需要这个店铺的列表数据,所以他后面的页码就是杰森。 然后我们呃就可以往后看他呃后面的页码是在另外一个接口里面, 然后我们也可以打开小程序的后台,然后往后呃刷新滑动一下,看一下后面的页码 跟啊第一页的接口是不是在一个。然后我们可以啊看到他嗯出现的这个接口的话,已经是别人标注过的,说明这个啊有其他人也用了这个接口,然后这个就是第二页往后的一呃那个数据的一个接口, 可以找呃页面上的一个呃一关键字来 ctrl 加 f, 再来搜索一下啊,发现啊确实是在这个接口里面, 然后我们后面配置的话,就可以直接配置第二页往后面的呃那个接口,如果第一页也需要的话,可以单独再配置 啊。但是因为大量的数据都是在第二个接口,所以我们就先来配置第二个可以看到他的数据的话啊,都是很多很多列都是 是那个 jason 的字符串,所以我们后面就是主要来讲一下这种呃如果字段是由一个 jason 的字符串组成的话,我们要怎么把它转化成一个标准的二维表格数据, 然后把刚刚啊第一页的那个备注我们改一下,把它改成标注一下这是第一页的数据啊,下次就可以看到别人,其他人看到就可以直接的啊,一目了然,知道这是呃店铺列表的第一页的数据了, 然后我们也可以再打开小程序啊,来搜一下啊上面的内容,然后来确认一下我们这个接口找的对不对,然后 调出 ctrl 加 f, 然后搜索框里面搜索我们呃小程序上面的内容,然后我们先搜一个双喜,看一下啊,是不是在我们的第二个接口里面, 可以在旁边右侧这个 jason 字那个 jason 里面看一下我们的关键字有没有在里面,然后 ctrl 加 iphone 搜索之后,呃关键字所在的地方会变成橙色,然后我们在右键寻找它的附接点, 然后一直找到最大的一个层级这个 items, 然后我们会发现这个 items 下面啊有很多的 jason 列表,然后里面有隐藏的我们需要的一些店铺啊,然后一拼多少件,然后是否包邮,然后满减这些优惠活动的一些信息, 然后接下来我们就开始来配置这个接口,然后首先是找再回到原来这个 jason 的地方,然后点了这个 items 我们要的数据层级,然后右键表格显示, 然后这是其实是我们的一个步骤,我们刚刚其实已经进行过表格显示,然后第二步,然后是找到 items, 然后右键配置为默认,这就相当于告诉我们的程序我们需要这个层级下的数据啊,把它设置为一个默认的路径,然后然后点击确定 之后,我们再进行下一步,再回到表格这里进行数据自断简化, 然后这里总共是有两个内容,一个是别名,一个是显示别名的话,是对应我们后面创建的视图啊,就是给我们的 字段起个别名,然后因为表的名字和字段名我们是没有办法改变的,他就是网页日志是返回什么字段,我们 就是什么字段,但是我们可以啊决定试图的字段,所以我们就可以给试图命名,然后命名命名一个我们能看得懂的一个别名,然后这个后面这个显示啊,是对应这个我们这个数据标的 啊,因为表表格的字段名我们没有办法改变,但是我们可以选择要不要这个字段,那如果是处,我们就是需要这个字段,如果是 force 就是不需要这个字段啊,但是数据字段简化这个步骤我们就是, 呃,可以做,也可以不做,呃,如果不做的话,我们就是默认保存所有的字段,或者是别人配置过的一个词段。 嗯,我们可以在后面后面的一个配置流程里再来啊,去掉我们不需要的字段啊,但是后面是不能取别名的,但是我们可以后面在自己的视图里面修改,所以这一步是可要可不要 根据自己的实际呃呃场景来确定要不要这一步,然后我们取完别名,然后设置完出和 force 之后,我们再保存设置就可以了。嗯,之后我们再进行后面的一步配置。 后面的一部配置呢,主要是为了啊,我们要把数据存在哪里,相当于我们前面是要呃告诉程序我们是要网页上哪一部分数据,然后后面一步就是我们要把啊网页上的数据啊 存到我们数据库的什么位置,就是这样分两步的一个步骤,让我们回到这个接口位置,然后右键点击监听高级监听这个呃这个选项, 嗯,然后他就会直接啊跳转到配置的页面,但是因为我之前已经配置过了,然后把配置删除了,所以他没有呃 直接跳转到配置的页面,然后所以我需要右键复制这个盖的,然后到盖的 to d b 里面去呃粘贴这个盖的,之后查询就可以了。 所以后面如果我们啊配置完了之后,如果想要更改配置,也可以用同样的方式,就是右键复制盖的,然后点击盖的 todb, 然后去重新 啊查询这个数据,然后加载配置,然后再修改配置就可以了。 查询之后我们的数据就出来了,我们然后进行配置,然后首先我们勾选呃创建视图,然后就可以看到上面的英文字段就变成了我们命名后的一个中文字段了,这就是我们前面取别名的一个作用,我们来创建视图了, 然后再来啊,我们可以对这个表明进行修改,然后也可以前面如果有些字段没有去掉的话,我们可以在这里啊把不需要的字段右键排除掉, 然后呢然后再设置我们的一个驱虫子段,等到都设置完了之后,我们再点击这个啊刷新,刷 新完之后就是只呈现我们设置为处的一个字段,然后这一步完成了之后呢,我们再进行一个数据库选择,因为哦我们今天是要处理杰森的呃支付创的一个字段,所以我们选择买 circle 的库,因为买 circle 库 八点零以上他是有专门处理啊字段是杰森字符创的一个函数,所以我们今天就要把数据存在一个买 coco 的一个数据库里,然后我们再根据啊这个页面上的第二个步骤,然后连接啊,连接成功之后他会有提示, 提示完之后我们再点击这个生成配置,就可以看到他提示我们生成啊配置成功了,然后就可以看到我们后面这个黑框框里面 经有那个脚本生成,然后创建表的一个啊脚本和创建视图的脚本,然后并且已经写入了啊当前页的数据,写进去的十条数据, 然后我们可以再来数据库里看一下我们刚刚写进去的数据,啊已经有十条数据了啊,然后为了有更多的数据的话,我们可以再来刷新一下网页,然后再来啊写我们的一个脚本如何处理节省支付串, 然后我们就呃刷新这个网页,然后这个步骤的话,我们也可以用呃引到 rpa 来代替我们手动来刷新这个网页, 可以给大家展示一下 rpa 呃介入之后的一个数据存储的一个整体的一个效果, 我们可以再到数据库里来看一下,然后数据已经啊进来了五十多条数据,我们就对这五十多条数据来进行一个呃处理, 可以看到它的字段,呃跟呃我们在功课呃右下角看到的 jason 的日志是一样的,它的很多字段都是一个 jason 的字符串,那我们呃就是要来处理这些字符串的数据, 然后这是我之前已经写好的一个脚本,嗯,可以看到它,嗯用的是 my circle 的一个 jason table 的这个函数,然后我们可以来看一下我们呃这个 jason table 的函数的一个构成参数是怎样的。首先前面是 我们这个字段,我们需要呃处理哪一个字段,然后这个呃在后面逗号,这个是从呃相当于这个心代表就是我要重连里面的所有数据,然后后面呃 这个中文的这个搜索到的店铺,这个就是我们要给呃 我们提取的这个字段另一个别名,然后给他呃设置一个数据类型,然后再 后面在呃表明他要解析这个字符串里面的哪一个字段,然后呢他相当于 jason table, 他把这个 jason 字符串当成了一个表,所以我们给这个表密一个别名,然后这就处理完了一个字段,然后面 我们可以叠加 jason table, 然后处理这个 display items。 二,这个,然后也是所有的字段都进行解析,嗯,然后这个是一拼多少件,然后我们也是给它密一个数据类型,然后也是是这里面的一个 text 的字段, 然后呢我们也要给它灭一个别名,嗯,然后前面我们在嗯 把自己需要的字段提取出来,然后我们搜索的内容,然后这个的话可以是搜索的商品或者是店铺都可以,然后冒 id, 呃就是这个店铺的 它的一个唯一标识 id, 然后再就是搜索到了哪些店铺,然后一篇多少件,这是我们想要的 一个字段,然后呢啊,因为啊后面给大家演示就是我们如果不经过后面这两个条件, view 啊这个关键字是含疑拼的,然后还有就是嗯他的 店铺名字不能为空这种条件的话它会返回很多数据,因为它的 jason 支付串里面就本身包含了网页的很多呃数据,但是我们只想要呃这几个字段,所以我们就会用呃就是这些内容,所以我们就会限制一下 这个不限制条件的话,他就会返回他有一拼多少件,满减多少,然后他还有什么其他的啊优惠政策,就是只要他嗯有什么内容,他都会返回来,然后 生成一条新的数据,然后他还有这种可能,店铺名字是空的这种或者一片多少件为空的,所以我们就要稍微处理一下啊,然后处理完了之后就是可以得到我们的一个标准数据, 然后可以看一下呃配合引导 rpa 刷新网页的一个效果,然后这个呃这个程序的话就是一个通用的一个呃滑动滚动条的一个程序, 然后他只要滑动就可以了,然后功课再把啊页面上的数据解析到数据库里, 根据我们刚刚的两个配置的步骤,然后入库到我们呃设定的数据表里面,然后我们来看一下我们入库的数据是怎么样的,然后看一下查询一下我们的一个结果。


内网呢,是必须用这个 ui boat, 然后引到 rpa 呢,又特别好用。我用了一下,确实挺好用,它对 python 的支持特别好, 而且好多地方和 uibot 其实可以类比,也可以用引导 rpa 来学拍摄,总之还是很好的一个工具。所以想这两个东西对比一下。怎么对比呢?就是让他们两个做一个一模一样的项目。 那这个项目呢?就是考试宝,找了两个账号,让他登录进去拿一下,抓一个信息填到后面,比如说抓取信息,这填一个,这填一个。项目比较简单啊,主要对比一下这个开发方式。 这个密码我设成白色,所以大家也看不到。这,那就先用 uibot 来写,还有个这个小窝,哎呀,不好用。小窝的底层是加瓦引到的,应该 是 python uibot, 他自己做了一个语言 ub script, 当然里面拍摄的影子也比较多啊。免费的版本都有各种各样的限制吧。这儿建一个流程,比如说叫 uibot 循环登录保持宝网页建个普通的流程好了。这个企业记忆流程模板 我还是不习惯建个企业级流程模板,在那个基础上改,总觉得有点杀鸡用牛刀的感觉,或者是我并不需要那么庞大的功能,代码写多了其实有点洁癖吧。啊,好多地方我在项目里不是用的到的话,他全给你铺上去也不太合适,更喜欢这种量体才艺。 根据项目的啊,需要。哎,有必要我才去加那个机制。没必要,咱们就简单一点,清爽一点。一个块应该是登录考试宝,然而不是 然而不是登录考试宝,他肯定要先拿一个账号,咱们先写登录考试宝了,完了再去改造这个流程,就是有这个流程,他一点一点发展起来,一点一点长大的感觉,跟玩游戏这个逐渐的打怪升级这种感觉。好,那就先写一个能登录考试宝的流程呗, 起一个新的浏览器,谷歌得装插件引刀和 uibot 小窝攻击这些轮廓啊,这几个数我用过了,我得去装插件。当然我并不知道这个考试宝的网网址,所以我得先去踩个点。手机有个考试宝的 app, 那其实搜考试吧,应该就搜的到,应该就是他的全拼这个在线考试啊。这个可能就是啊,当然他出来以后是 考试宝典 com, 但是我是要登录的,所以我是不是得来到登录页面呢? 那登录页面这个网址又比较长,我能不能用比较短的网址跳到这个登录页面的?如果加个考试网,后面加个 login 的话,你看也是可以的。那我踩点踩出来的这个网址就用这个。那把这个网址往这一粘, 粘了以后直接点运行应该可以啊,但是你怕这个信息没上去的话,按一下 tab 键,他切到别的输入框,应该这个信息就进去了。嗯,然后点运行,但是这个体验其实并不会太好。为什么呢?他会开了两个这个总有点怪怪的感觉, 所以这个流程我就要开始改造了。登录之前呢,好像得有一个流程叫初始化,初始化里 做一点事情啊,做一点事情,就是那个杀进程结束应用之类的,当然我想不起来啊。我知道是一个 app, 点 q 好像是,咱们找一找吧,关闭应用,应该是这个 关闭应用,你看它的原码 a p p 点 q, 那就那就差不多了。然后 ctrl shift escape, 这里可以找一下这个进程的名字,就是它 from, 点 e x e, 把它填到这,这是专业模式。 那普通模式直接敲就可以啊。 control 点 e x e, 如果要结束多个进程的话,能不能逗号分格往后写?可能不行, 那就得循环用个列表,或者去 excel 里,或者配置文件里把 excel et, 就 wps 说等等列进去这儿去循环那个列表,把它应用全部终止掉。 我想杀晋城,他可能需要点时间,所以终止完了,要不等上两秒算了。那我这个流程就改造了一步了,先初始化,然后再去登录运行的话,他应该能帮我先把 com 晋城先杀掉,再去开启考试宝登录页面。 呃,然后我又不满意这个,这个其实有时候会影响操作,但是这个地方他可能不一定会影响,但是我需要去,可能需要去捕获一下他。那继续改造这个流程。还有一个问题是他没有全屏吗?那全屏的话可以 用一下模拟按键的快捷键是 windows 加上方向快捷键。找那个 up, 这里它应该画的是箭头吗?对,这样它能放到全屏这里就有区别。 这个他是有超时时间引到那边有一个等待浏览器加载完成。这边有没有我印象不太深了,但是这样子可以根据经验死等一下,我觉得也挺好的, 就是浏览器启动了以后,我固定的等上一到两秒,让这个页面稳定一下。这个有点像什么呢?就和学开车一样。 呃,想开快的。其实那个是熟能生巧,顺理成章的事情,但是你在刚开始的时候想让这个程序慢下来,其实是更难的一件事情。 比如骑自行车,你要控制平衡,要慢一点。骑其实是挺有难度的啊,更难的是你就在原地不动,也不会倒,那个当然就是需要特技了。这个 urpa 流程也是这样,想让它慢慢下来,其实 还是需要一些思考和功利的,你让每一个环节控制的都比较稳。有些流程他不是图快的,要很稳定,在关键的节点他要成功率很高,有时候异常处理机制比较稳定,然后该快的地方快,控制这个程序的节奏啊,这个地方让他稍微稳一下。呃,放到全屏, 然后我想处理处理这个,这里不能等待元素啊,因为这个东西他不一定会出现,所以就是要判断元素。那判断恢复还是判断叉的?我为了关关掉他,我觉得我就判断这个叉好了,判断这个叉存在,我点一下这个叉是这么想的,然后还想让他的 元素命名有含义一点。所以我在流程这里直接先起了这个界面库,然后去添加界面元素,补一下这个叉可以补得到啊。这里又有区别了, uibot 补的时候是直接点一下引刀,补的时候是 ctrl 加单击,这个就是设计上的区别啊。我倒个人更喜欢引刀那种方式, 因为你一旦进入捕捉模式的话,你就不能乱操作了,你要想操作,你得按 f 二,这个时候你可以操作,比如放到全屏,但是引刀的话进来呢,你就可以先随便操作,操作一通,找到你的位置以后,哎,这个时候是关键的时候,按住 ctrl 加 点击,我倒觉得引到那那样设计好像更科学一点。呃,没关系啊,这种习惯就好。然后这里他叫按钮关闭。其实没有说清楚,这种弹框有可能是 恢复页面吧,当然也可能是别的恢复页面的这个叉和别的这个弹窗的叉有可能可以用同样的元素定位 来通配,都适配,有也有可能不行。那我这里不确定它行的话,我觉得名字还是给它改一下好,当然可以去校验。 这里要命名有含义的话,就是要不你就写要恢复页面吗?啰嗦一点也可以啊。要恢复页面吗?问好就发上面的按钮关闭,这样子起个名字,界面库里有他。以后呢?登录里面我就想去判断一下。这里又有区别。 ui boat 的这个预制键命令块儿和引刀的这个分组方式是不一样的。如果你想找 if 找如果的话, 其实啊,在这个下面还挺难找的,但是在引到那边找,循环找如果会非常的容易,一开始你就其实习惯了一种就挺好,但是你要引到的那种的话,可能我感觉对用 户的这种更符合正常人的思维吧,比外报的这边设计的可能更像是城市化的,但是个人的感觉啊,这个无所谓,反正衣服我现在是找不到,当然他可能在这个下面,但这就这就很很难找了,对吧? 词法语法,哎,然后这样子。这个衣服循环都是经常用的,那当然搜一下衣服是可以的。如果条件成立,写条件,当然条件之前呢,我得判断元素是否存在 这个元素,我就从界面库里去选一下这个按钮,选上了以后在这能写,但是实在是不习惯,我去代码,代码下写好了是否存在这个按钮,他就会是一个不尔之 存在的话呢?我要去点击一下,点击的话在鼠标下面的点击目标上面,同样的这个目标粘到下面就可以了。由于我做了 初始化可以杀进程,所以呢,我现在再次运行的时候不需要去关掉他这么麻烦,我直接 ctrl f, 他会帮我先杀掉进程, 稳上一秒,然后重新启动,这样调试的时候会方便并且我写的这个恢复页面吗?哎,他也帮我关掉了,那就实现了我这个意图。

