这篇文章主要就是在影刀这个软件中对于循环和条件命令的使用,进行各种逆天操作
希望大家多多支持啊
目录
- 1.条件判断的基本用法(单分支)
- 2.二分支
- 3.多分支
- 4.条件的嵌套与多条件判断](https://flowus.cn/ceb9d0ea-1963-418d-b782-d2d77bfb6e53)![在这里插入图片描述
- 5.其他类型的判断
- 6.条件判断的回顾
- 7.循环
- 8.循环的构成
- 9.ForEach列表循环
- 10.循环相似元素
- 11.For次数循环
- 12.循环的嵌套
- 13.循环的控制(break和continue)
- 14.三大循环
1.条件判断的基本用法(单分支)
之所以使用到条件判断因为一件事由多种的可能性,我们需要对其进行判断的操作
我们在这个左侧栏的最上面就能找到条件判断
我们现在做一个简单的条件判断,3是不是大于2
并且我们在中间进行日志的打印,如果是真的话,那么就打印日志里面的内容
如果这个判断时真的话,那么我们就会执行if条件和end if中间的内容
如果判断内容是假的,不成立的话就直接跳过去
直接执行end if后面的内容了
那么这个条件判断我们就可以放在我们之前创建出的第一个机器人里面
如果我们输入的内容是订单里面不存在的话,那么我们就不进行后续的数据抓取的操作了
如果搜出来我们就进行一个数据抓取的功能
这个条件可以加在这个清空数据表格之前
那么我们应该选择哪个条件判断呢?
我们可以选择左侧栏中这个IF网页包含拖出来,拖到这个清空数据表格之前的位置
这个其实很容易理解,就是判断网页上面有没有对应的元素
接下来我们就进行一个元素的捕获操作了
我们可以思考下,搜到商品的网页和搜不到网页的商品之间的区别了
我们可以发现搜到订单的时候是有下一页的按钮的,但是右边搜不到的话就没有下一页的按钮的
那么我们就可以利用下一页按钮来当做一个判断的条件,一个元素
我们点击完搜索之后我们可以进行这个下一页元素的判断,看看这个元素是否存在,如果存在的话就说明我们输入的这商品是存在的,如果是没有这个元素的话就说明是不存在的
我们通过IF网页包含判断当前网页上面是否存在这个下一页的按钮来判断我们输入的商品是否存在
如果包含这个下一页的按钮,我们就进行抓数据的操作
我们将抓取数据和导出这两步操作折叠收起来放在这个IF网页包含里面
如果包含的话就进行判断里面的命令操作
我们在程序中输入小猫这搜索条件,然后运行程序,因为不存在,所以直接跳出来了
除了这个通过下一页按钮来判断的操作,我们还能通过整个页面进行判断,我们再次观察这个页面,我们可以发现我们如果搜索不到对应的商品的话,这个页面会显示暂无数据
如果存在的话是会显示对应商品的数据表格的
我们可以将这个暂无数据进行一个元素捕获
我们还是通过IF网页包含的操作,选择里面的不包含元素,这个元素就是我捕获的这个暂无数据
如果不包含这个暂无数据的话,那么就说明我们搜的商品存在
到这里我们进行归纳:为什么进行判断,因为一件事存在多种可能,
我们在这里通过对两种情况的对比(商品存在和不存在)我们发现下一页按钮的区别和页面元素的区别
我们再通过IF网页包含进行判断,将抓取数据和导出数据放在这个判断里面,如果判断是真的话,就进行判断中的操作
那么我们通过判断网页元素存在与否我们知道这个判断可以是正向判断,也可以是反向判断
但是一般来说,正向判断更加符合逻辑思维
2.二分支
现在呢,我们已经可以判断我们输入的商品是否存在
那么现在我们需要做一些操作
如果这个商品不存在的话我们就需要打印日志
那么这里就涉及到了if else的组合操作了
如果IF网页包含这个判断里面的条件为真,就进行IF里面的命令
如果为假的话,就进行else里面操作
我们在结束判断之前加上这个else判断操作
进行完操作就会打印内容不存在的消息
3.多分支
我们先创建一个自定义对话框,然后输入一种颜色,然后我们在影刀商城这个页面,如果我们输入的是红色的话就勾选红色的对话框,如果是黄色的话就勾选黄色的对话框
那么这种就是一个典型的多分支的情况
我们先设置一个变量用来接受我们输入的商品名字
我们可以通过这个打印进行观察
接下来我们对颜色进行一个判断的操作
我们在这个if条件中放入一个元素操作中的设置复选框,进行一个复选框的点击操作,如果我们输入的符合这个判断条件的话我们就进行复选框的勾选操作
如果我们输入的是黄色呢?那么我们就进行黄色的复选框的勾选
那么这里我们就会用到else if
如果if判断不满足的话,那么我们就在剩下的选项中进行判断操作
如果等于黄色的话我们就进行复选框的设置操作
如果我们输入的是白色的话,这些条件都不满足,那么我们就加个else的指令
4.条件的嵌套与多条件判断
上面几节课程学到的知识点
在日常生活中我们经常会以两个或者是多个条件进行判断我们是否需要进行对应的操作
在这个嵌套里面同时满足这两种情况我们才会做出对应的操作
判断中存在另一个判断的话我们就称这个叫做条件嵌套
那么对于这个图的话我们需要先判断状态那一栏的元素是不是完成的
我们接下来要使用到网页自动化里面的数据提取里面的获取元素信息的指令
我们需要获取商品状态元素的内容,然后对这个内容进行判断,符不符合完成
如果状态元素等于完成的话那么我们就执行if语句内的命令,不等于的话就跳过
设置第二个条件,就是内置的条件,如果这个也满足的话我们就进行发货操作
那么这个条件的嵌套我们就实现了
我们实现了通过对个条件来判断要不要做一件事情
主要流程:我们先拿到商品的状态元素的内容,满足的话就进行If条件里面的内容
然后我们就进行获取商品名称的内容,如果不等于篮球鞋的话我们就进入到里面的命令操作进行发货的操作
这里的话获取元素信息在这个网页自动化的元素操作里面的,这个很重要的
我们这里仅仅只是两层判断,如果是多层判断呢?我们一个个添加这个if命令会显得很乱,很复杂
是否存在这么一种方法:既实现了嵌套,看着也很整齐
那么这里就涉及到了一个指令叫做if多条件
这里就能进行多个条件的嵌套操作了
并且符合以下的全部条件,那么这个条件判断结果就是真的
将需要判断的两个条件都写在这里
如果我们在IF多条件中选择这个符合以下任意条件的话,只要有一个条件是真的,那么整个都是真的
5.其他类型的判断
除了条件的判断,还存在其他的判断
第一类:数理的判断:5比4吗?
第二类:包含判断 :网页上面包不包含某个元素
第三类:存在判断 :卓面上存在XXX这个文件夹码
还可以在if语句中进行包含的判断
还是说判断列表中是否包含某个元素
6.条件判断的回顾
7.循环
我们搜索完连衣裙之后我们再搜索篮球鞋,我们再搜索短袖T恤
这个重复的动作,每次的操作对象都是不一样的,但是大致的动作是一样的
那么这个时候我们就可以用到循环了
8.循环的构成
我们这里拉出了一个for循环
我们设置好起始数为1,结束数为10,每次以1进行递增操作
我们通过这个循环10次,每次循环的数字保存在loop_index中,我们在循环中间加上一个打印日志的操作,就能看清楚每次循环的操作了
这个循环和python 、c/c++中的for循环是一个道理的
对于这个for次数循环来说的话,我们循环进行打印这日志的操作
9.ForEach列表循环
我们搜索完第一个商品,然后搜索第二个,第三个,那么这个循环操作我们可以使用到这个ForEach列表循环
我们先搭建搜索一件商品的流程
这里我们就实现了一个商品的搜索和数据抓取的操作
我们将ForEach列表循环拉出来,然后点亮Python的标志,然后进行列表的创建操作
我们将填写输入框搜索已经抓取数据的操作放到循环里面去
现在我们往这填写输入框里面输入的内容就不是固定的内容,而是每次进行循环循环出的内容
也就是每次待搜索的商品名称
那么我们这里就通过循环实现了多个不同种类的商品的搜索以及数据的抓取操作
我们感觉这个主要还是我们将所有需要搜索的商品做成一个列表放到循环体里面,每次循环拿出来一个放到搜索框里面去,这样我们就能将所有类型的商品都拿出来,将数据进行抓取的操作
每次循环拿出来的变量就存放在这个待搜索的商品名称,然后我们填写输入框就将这个待搜索的商品名称放进去
当我们遇到将每一个内容拿出来进行处理的这种场景,我们就可以将ForEach列表循环拿出来
10.循环相似元素
我们现在需要对一个页面上多个订单进行一个发货的操作,那么我们应该怎么进行一个操作呢
这个就是我们需要将把处理一个订单的事情进行一个循环操作
我们先将这个确认发货这么一列的相似元素进行捕获操作,然后在这个循环相似元素中进行循环的操作
我们对于一个操作的话,点击完确认发货之后我们还要点击确认,然后将这两个操作放到循环里面
对于这个循环相似元素的话,这个相似元素就是我们捕获的这个确认发货的按钮,每次循环出的这个都会存放在web_loop_element里面进行存放,所以我们在点击元素的时候我们选择这个变量的名字
然后就能实现循环点击的操作了
循环相似元素的时候我们将所有的相似元素进行循环的操作,
11.For次数循环
对于处理多页的订单
我们通过多次循环进行多页订单的一个翻页操作
我们在循环中每处理完一页的订单就进行翻页的操作
我们在每次翻页之前判断我们当前的页数有没有超标
所以我们添加一个if条件
如果这个loop_index不等于5的话,说明我们的当前页数没有到最后一次循环
如果当前页面不等于5的话,我们就可以进行下一页按钮的点击操作
对于这个页数的话,我们在批量数据抓取的时候介绍过这个方法,获取这个最大的页数
12.循环的嵌套
我们在数据抓取的时候介绍过关于如何获取这最大的页码数
我们可以发现最大的页码其实在这组相似元素的倒数第二个位置
我们现在相似元素操作的时候获取相似元素列表
我们需要获取这页码相似元素组的文本内容,然后将文本内容保存在web_element_list这个变量中
那么这里打印出来的就是一个列表了,最大的页码数就是在倒数第二个位置上了
然后我们设置一个变量来赋值成为这个页码最大的数
然后我们的循环体里面的结束值就不用这个固定的数字了,直接放上我们通过方法得到的最大页码数代表的变量就行了,同样我们在这个IF条件里面也将这个最大页码数放进去
如果还想添加这个发货的操作的话,我们可以在这个循环一起进行的
我们先将发货那一列的相似元素进行捕获的操作,然后循环相似元素,每次循环就进行点击这个相似元素以及点击确认操作
这里我们写完了发现有两个循环,我们可以发现外面循环是专门进行翻页操作的,而里面的内循环是进行点击确认发货的
13.循环的控制(break和continue)
对于上面的那个嵌套循环,我们好像非要等到循环完成之后我们才能对循环进行控制,在循环进行的时候我们是控制不了的,那么我们有没有什么方法进行循环的控制呢?
我们希望在循环中保持对循环控制的权利
现在呢,我们的连衣裙没货了,我们现在想要跳过去,进行其他商品的数据抓取操作
我们先使用IF条件进行判断一下
判断当前的商品是不是等于连衣裙,如果是连衣裙的话我们就跳过去
我们在循环的积木盒子里面可以找到一个命令叫做继续下一次循环
我们现在对这个循环进行一个解释
我们每次循环出的元素,我们都会进行判断等不等于连衣裙,如果等于的话,后面的填写输入框进行搜索以及抓取数据的操作直接跳过,不进行后面的操作,直接进行下一次的循环操作
相当于Python、C/C++中的continue,跳过当前循环继续下一次循环操作
现在呢,如果我们遇到搜索连衣裙的,我们相直接停下整个循环,不需要进行了,我们改怎么办呢?
我们可以使用一个退出循环的操作
直接跳出整个循环,当这个商品等于连衣裙的时候我们直接退出整个循环
这个就是循环的控制操作