这一讲,我们给大家聊一聊司令面的三种等待方法。司令面呢,提供的等待方法呢,有三种,他们分别是强制等待 sleep、 隐性等待和显示等待外部抓位的。我们简单做了一个小的总结, 看呢,在 sleep 我们并不推荐,因为当我们的代码执行到 sleep 这一行的时候呢,你设置成三秒和五秒,那代码在这一行呢,要去等待相应的时间,所以他比较傻,也叫做强制等待。 sleep 呢,常常应用在调试环节,在敏捷测试的迭代测试过程中,包括生产环境中,我们要避免 sleep 的应用。第二种方法呢,叫做隐性等待,隐性等待它又叫做智能等待和页面记得等待,它是在检测页面上的某一个元素,如果没有出现的时候,它会 等待多久,所以说理性的呢,代码应该放在我们的代码的顶部。第三种方法叫做显示等待,外部抓为特,外部抓为特呢,是对元素级别的判定,我们这是一个比较常用的方法,他可以判断某个元素等待的时间是多久,而且在 等待时间过程中会每间隔多长时间,所以显性等待呢,使用的次频率呢,会比较高一些。 那我们在暗中呢,经常看把隐性等待和显示等待的结合起来利用,那在结合起来使用的过程中呢,我们要他们背后的一个逻辑,他们往往要遵循两个原则,第原则一就是就近原则, 与元素距离的相近的就是 web 抓 wet, 所以 web 抓 wet 呢,先进行生效。第二个原则呢,叫做时间大的原则。如果 说在我们的自动化脚本之过程中呢,又有隐性等待,又有我们的显示等待,那在这里边当某一个元素检测不到的时候,会选元素的属性 没有判断出来的时候呢?这时候呢需要等待多久?如果说隐性等待的时间比较久,那我们就遵存隐性等待的时间。如果说显性等待的时间比较久,那我们就遵循显性等待所设置的时间。这三种方法各位小伙伴你们掌握了吗?
粉丝2020获赞5017

三、零念母无法定位元素元音及解决方法第一种,元素定位,表达式写错。解决方法,将表达式在页面中进行定位验证, 找到表达式和定位到的元素进行匹配。第二种,页面未成功加载元素。解决方法,添加等待,三种等待方式可供选择,强制等待、显示等待和隐示等待可以结合具体场景做应用。 第三种,元素在 fm 中,解决方法,切换到 fm, 然后再进行元素定位。第四种,元素动态发生变化。解决方法, 可以通过附近或子元素进行当前元素定位。第五种,已经识别到,但是无法进行操作。解决方法,执行页面元素对应的操作,比如点击下滑。更多测试资料,点击下方链接领取。

selina miui 自动化测试只显示等待,好,我们来看一下显示等待, 那么显示等待的话呢,他需要这个使用外转外边位置啊这个类,然后呢他可以结合按跳这个方法呢,在按跳方法当中呢设置这种显示等待的条件,然后呢形成这种一种动态的等待场景啊,所以有的也叫这个动态等待, 那么他等待逻辑是这样的哈,就是我可以设置一个等待时间,还有一个间隔时间,那么在这个间隔时间内呢,他就会每隔一定的时间呢就去判断啊,这个显示的条件呢,没有成立,成立,那么他就会执行相应的后续操作,这样的话呢, 他就不需要什么了,他就不需要等这个整个网页呢加载完成之后哈才来执行相应的这个动作了。好,那么他的用法 就是今天十六号我有专为特哈这个类的对象,首先呢传入我们这个浏览器的熊对象,然后呢设置一个等待时间,然后设置一个间隔时间,然后间隔时间呢,你也可以不设哈,默认呢是零点五秒啊, 然后呢后面呢跟按跳这个方法,然后呢设置我们显示等待条件,那么所谓显示等待条件呢?他身上是这个呃一类方法啊,没有很多哈,有很多,那么这方法都在哪呢啊?都在 spac 的,可能是这个库下面, 当然我这里呢,另另另外呢命名为了这个 a c 啊,这样的话呢写的短一点,那么每个显示的条件呢,它的含义呢?都是不一样的啊,都是不一样的,你像我们现在看到这个 please 是 ophone anime 的老黑的,那么 他的含义什么?就判断这个原则没出现,出现了呢,条件成立啊,那么他的传餐的话呢,注意是需要传一个原组的,那么这个原组呢,有两个部分组成, 第一部分呢是定位这个元素的这个方式,比如说 class name, 第二部分就是什么呢?那克拉斯的收音质啊,那么 这一行的含义就是什么呢?就是我显示等待呢,设置五秒,然后呢,每隔零点五秒判断一下 plus 等于 log inpost 的这个元素有没有出现,出现的话,那我就即刻执行后续的这个三个 case, 这个操作 好,我们来执行一下啊,看一下例子 也给卡死在这了, 好,再这样一次 套是非常快的,对吧?嗯,当然对于 us 的话来说呢,这种偶发性失败呢,这是不可避免的哈,没有办法。嗯,好,这是我们这个显示等待哈他的基本的这个使用。 本次知识输入就到这里啦,你学会了吗?还有哪些疑问,评论区留言将一一为大家解答。

selinamui 自动化测试之影视等待好,我们来看一下这个影视等待,那么影视等待的话呢,是 us 的话当中呢设置等待的方式之一,那么他的话呢是呃可以等待整个页面的这个加载,当这个页面加载完成之后呢,那么他就可以去执行后续脚本了,那么他是不会等完这个设置的等待时间的,那么他的方法呢就是这个, 那么他有一个特点呢,就是在整个浏览器的驱动周期内呢,只需要设置一次,那么一般设呢,就是在浏览器驱动之后啊,会尽快的立刻啊就把它给设上,就设在这个位置, 那么这里呢是五秒,那就是说我总共呢等五秒,但是呢他不会等完五秒,只要五秒内这个网页呢交载完成,那么他就会去执行后续的这个操作,就会去执行定位 呀啊,然后呢网页切换等等这些操作,咱俩如果说超过五秒呢,这个网页没有较大完成呢,就会超时报错啊,我们来执行一下,看个例子。 好,当然在这里呢被烤死了啊,非常正常,是因为呢,对于显示等待来说呢,这些元素呢,都已经是交代完成的, 但是呢这个这里这些数据他是需要什么?需要从前端哈向后端请求回来的,那么这个请求过程是需要时间的, 所以会导致什么呢?会导致这个数据还没有回来哈,然后就进行后续操作啊,所以就卡死在这了 啊,所以这也是这个什么显示等待的一个什么一个这个呃缺点吧,对于这种动态将来的数据啊,他是没有办法太好的这个处理的, 那我们可以再执行一次试试。你看你看,这次就可以了啊,正常执行, 因为刚才那个数据呢,他请求我一次啊,可能浏览器呢已经缓存了一些出来了,所以这个时候呢,他就可以 这个后直行,立刻啊,就直行我们这个,是吧,后边得脚板啊。 本次知识输入就到这里啦,你学会了吗?还有哪些疑问,评论区留言将一一为大家解答。

hello, 欢迎学习爬行课程,那么这节课的话我们要跟大家讲一下这个 c 类模当中的另外一个比较重要的知识点,叫做这个页面等待啊, 那么什么情况下的话需要使用的这个页面等待这个东西呢?我们来看一下哈,现在的网页的话,他是越来越多的采用的这种阿贾克斯技术,对不对?这样的话哈程序就不能确定啊,我们需要阿贾克斯这个技术,请什么时候会把这个数据请求回来,什么时候这个元素会出现, 那么这的话如果我们啊还就说在这个元素出现之前,我们就去使用的这个元素啊,那么的话就会报错,对吧?就会报错哈, 那我们这个 steam 的话,就专门针对这种啊,这种不好这种及时的问题出了一个这个解决方案啊,就是这个等待啊,就是等待啊,那么这个等待的话又是分为两种等待啊,一个是叫做影视等待,一个叫做显示等待啊,那么什么叫做影视等待,什么叫做显 是怎么办呢?这地方我稍微来做个简单了解啊啊,饮食等待的话,它是什么呢?就是你在获取一个不存在的元素的时候, 如果这个啊再获取个不存在的元素的时候啊,那么你可以给他指定一个确诊的时间,比如说我给他指定二十秒,那么我再获,比如说我现在就去获取这个元素,但是这个元素还没被加载出来, 那么的话我就会去等待二十秒啊,那么二十秒之内,不管这个元素有没有被加载到,我都是等待二十秒钟的时间啊,如果等待完二十秒之后这个元素被加载到了啊,那么这时的话我就去获取个元素,然后做走完,然后的话啊做下面的操作。如果啊在二十秒之后还是没有获取到啊,那么的话 啊,就会抛之异常啊,就会抛之异常啊,这个的话就是影视等待,影视等待说白了就是去等待,就是你在获取一个不存在的元素的时候,等待一个确切的时间啊,等待一个确切 时间啊,好,第二个的话就是显示等待啊,显示等待的话就比这个影视等待更加智能一点啊。嗯,怎么智能呢?显示等待可以给他指定一个这样的最多等待中多久的时间啊?比如说我可以说我最多只能等待十秒, 但是这个十秒当中如果啊我在挂机到那个元素已经出现了,那么的话我就不再去等待啊,就是一个这样的区别啊,就是一个这样的区别啊,只要把这个显示等待这地方啊,你可以给他传递一些这个条件,对吧?比如说你现在的话 你想去获取什么呢?你想去获取到这个元素啊,你想去获取这个元素,但是啊,但是这个元素啊,但是这个元素到现在还没有,还没有,还没被加载出来,那么这时候的话啊,我就最多等待十秒钟的时间啊,那么这个地方你就可以给他指定 antio, 就是直到是吧,直到这个元素 被出现了,直到这个元素出现了啊,那么的话就赶紧把这个元素返回给他啊,拿到下面去用啊,就是一个人的区别,好吧,好,那么接下来我们来做个测试啊, 打开一下我们的这个代码啊,这个地方的话我是在这个 demo 九点平方来当中来跟大家讲到的啊。好,那么这个地方的话我是准备来打开豆瓣网这个网站啊,那么在豆瓣网这个网站的话 啊,我现在去获取一个这个元素啊。获取这个元素啊,获取什么元素呢?来看我怎么写啊?就是 driver 点那什么呢?发个 element by id, 这个 id 的话我随便乱七八糟写一个 这个这个 id 等于这个东西的话是肯定不存在的对不对?那么不存在哈。如果你采用传统的方式,如果你没有设置这个等待的话,那么你右键来执行来运行一下哈。这地方他会马上抛出一个错误,马上抛出个异常啊,当然要等把这个浏览器启动以后啊,好,启动完之后这个页面 加载完之后啊,他就会抛出一个异常, 哎,马上就会抛这个异常,对吧?啊?这个地方设置的这个等待视角,我说怎么这么这么慢啊,怎么会这么慢啊?好,再来看一下啊, 刚刚是不小心设置了一个等待时间啊,这才会这么问啊。好,现在的话打开这个页面,打开完这个页面以后下面的话也就马上报错了,对不对?那么如果这个地方给他指定一个这样的等待的时间啊,比如说 driver 点那个什么呢? 影视啊,影视叫做啊 inberry inberries。 呃,这个单词怎么写啊?叫做这个单词叫做影视的影视的意思啊。然后我给他比如说只用二十秒钟的时间啊, 二十秒之内啊,如果啊,二十秒哈,我如果画出这个元素没有画出到,那么的话我就会去等待二十秒,对吧?啊?再来一下啊。 好,那么这样的话他就不会马上抛出异常了啊,他就会去等待二十秒钟的时间啊。这句话你可以看到之前没有设置这个等待时间,是不是你马上抛出异常的了?现在的话哈,就在这个地方慢慢悠悠的慢慢悠悠的在等待啊。 等到二十秒以后啊,他这里边如果还没有获取到这个元素啊,那就不好意思了,他就会抛出这个异常了,明白是吧?啊?就会抛出这个异常了啊。 哎,那么现在的话是等待这个二十秒,对不对?哎,等到二十秒就抛出这个异常了啊。好,这个的话就设置那个影视的等待时间。好吧。好,那么接下来我们再来看一下这个什么呢?显示等待啊,显示等待的话你可以给他指定一个条件啊,就是呃值, 比如说我最多等待十秒,对吧?但是如果十秒之内还没有啊,也十秒之内已经快速到这个元素,那么我就不去等待了,对不对?好,那么这个东西的话我们就需要借助什么呢? 需要借助这个叫做 web driver raise 这个类啊,然后再把 driver 和这个什么呢和这个时间把它给传出去啊,然后这个对象上面的话又有方法,就是什么呢?就是 antio 啊, nto 的话在这里面你可以给他指定这个什么呢?给他指定这个。呃那个条件啊,给他指定这个条件哈,就是获取到了这个东西以后啊就马上出来,好吧,就马上往下面走啊。好,那么这地方我们来写一下啊。 呃这个地方是那个 driver 点那个什么呢啊不是 driver 啊,是要这个来导入一下啊 点那个什么呢?点那个 support 啊 support 的 u i 啊音炮的像这个什么呢?那个显示等待是呃 web driver 啊 web driver which 啊 好,这段的话传一个 driver 进去 diy 然后是十秒钟的时间对吧。这个可以给个 antio 啊 antio 的话带来的是就是这个条件啊这个条件。那么我们这个地方的话啊就需要去导入那个条件的啊就需要导入那个条件啊。好那么这个条件的话是 from 这个什么呢? have all informal city 什么音啊点 driver 点那个什么呢?点那个。呃来看一下啊这个东西还确实不太好记啊。叫做啊就是色泡的下面啊就是色泡的下面。 音炮呢像这个什么 except 啊 except 的肯定是就是期望的条件啊然后这个单子比较长那么一般我们用它的话会给它取个别名叫做 e c 啊然后的话这地方我们来写就是这地方 e c 点 e c 啊 e c 点那个什么呢? present 角啊 for element 角 located 啊大概就是 present 大概就是出席呈现 的意思对吧。啊 elementor locate located 代表的是什么呢?当然是啊这个元素被加了进来了啊。呃已经出席了已经出现了对不对。 located 代表的是啊你采用什么样的方式来去取这个元素 那么现在比如说我们采用的是这个 id 的方式啊那么这个地方我们就把那个 by 把它给导入下啊专门像这个什么呢 send them 点 wifi jara 点那个什么呢?点那个呃 comman 啊?点 by 对吧?点 by 啊 by 音炮呢?像这个 by 对吧?好,这个的话就是那个 by id 啊 byd 然后的话这里面随便写个东西啊,这样的话去获取啊。这个里面的话是只能传一个只能传一个 传一个边缘进去哈。这个边缘的话需要放那个原组当中啊或者放那个列表当中啊要放要要放那个原组当中啊要放那个原组当中啊。这两个东西不是要分开的啊是要放那个原组当中传进去的好吧好那么这样的话他就 会去等待十秒的钟的时间好吧好,那么 ctrl 加往下加啊,然后我们 ctrl 加再来一下啊。现在的话我们是已经知道对吧?在这个页面当中这个 id 等于这个东西的话是肯定不存在的对不对?所以的话他就会去等待这个十秒钟的时间啊等待这个十秒钟的时间如果十秒钟之后还没有等到那么的话他就会去 啊抛这个异常了,对吧?就会抛这个异常啊。那我们稍微等一下啊 啊这个地方已经设置了二十秒钟的时间啊,我们先把这个删掉啊。我说怎么这么久啊。 好那么这样的话就会等待十秒钟的时间啊。待会讲完这个不存在 这个是不存在的对吧?待会讲这个不存在我们再来讲一次那个存在的那个情况啊。就如果这个 id 存在的话那么的话他就不会等待失眠了对不对啊?这地方是抛出了一个啊啊胎帽子代表的是那个什么呢?超时的意思对吧。啊就是已经超时了超过十秒了还没获取到,对不对?好,那么现在比如说我们想要去获取下这个什么呢? 想要去获取一下这个东西啊,这个东西好,那么我们想要去获取这个蜂窝 mel 可能加 c 啊,拿到这个可能加 v 啊,再来走一下啊,这样的话他就不会等待了,他就会就马上获取的,对吧?啊?这个地方我们为了那个东西我们把它给打印一下吧,把它给打印一下啊? 哎,现在的话就马上可以获取到,然后的话这个程序就马上退出了,对不对?说明这个地方的话是已经获取到了啊,已经获取到了以后他就不会再去等待了,这个的话叫做显示等待啊,那么这个显示等的话是更加智能一点,对不对?更加智能一点啊? 当然哈,可能有的东西就会想,是吧?老师还有没有其他的这个条件啊?这个的话是单词是什么呢?某个元素已经被架子进来了,对不对?然后你你如果还想看一下其他的一些这样的 条件的话啊,你可以按下口令加币进去看一下,对吧?哎,这个里面的话就包含了俗话的那些的条件,对吧?比如说胎头椅子是否等于某个对象啊?是否等于某个字啊?胎头空对子啊?标题是否包含某个东西啊? 啊?这个是那个元素被呈现的对不对?这个是 ur 八什么东西啊啊?这一块我就不带他去干了哈,大家感兴趣可以每个东西都去 看一下啊,都去看一下啊,好,那么这个的话就是显示灯的啊。呃,就是大家以后再写这个代码的时候啊啊,以防万一,对吧?以防这个东西还没被加载进来啊,你就去获取啊,就会抛出一个这个异常, 那么的话你就可以啊,使用这个什么呢? red driver, 使用这个显示等待,好吧?使用这个显示等待啊。好,那么这样的话我们的这节课程就讲到这个地方啊,感谢大家。

自动化里面有哪三种等待啊?这个通常呢我们是问的 ui 自动化,那三种等待的分别是对应的啊。第一种现成等待,也就是强制等待。这种等待方式呢,我们需要用到拍手里面的太阳这个模块啊,实际上就是 不论他执行的逻辑是什么,就是我知道大马运行到这个地方之后,这个县城就会强制性的等待。那这种情况的话,会让我们的系统呢执行到这个地方 停一顿一段时间,再执行后续大码。那但这种方式呢,建议少用,因为它会降低我们整个自动化大码的执行效率。 在自动化中呢,比较建议的是采用什么呢?像影视等待和显示等待。影视等待呢,指的是在我们整个淡抹文化初始化的时候, 我们就定好了,让我们整个元素在指定的时间范围内去进行加展。如果说啊,没有在这个时间范围内加展完毕,这个时候呢,我们就认为超时啊这种情,这种影视等待啊,它的特点就是什么呢?需要等整个页面加载完成啊。这个地方呢,要注意一下。 那我们在工作中时间是比较多的,可能就是显示等待。显示等待是什么呢?就是通常来说我们制定一个这种海数大码啊,然后这种大码呢,是要等待某个元素完成之后,再继续执行后续的大码。 哎,这个的话在拍摄呢是利用呢框架里面呢,他有对这个逻辑进行一个封装啊,我们可以使用这个 webber, drawer, weight 这些对的一个包直接去用就可以了。好,这个就是我们经常啊所讲到的 ui 自动化里面的三种等待的一个方式。

selinamui 自动化测试只显示等待五,我们再来看一下这个显示等待条件。 tax to be plus 呢音 element。 这个鞋子的条件含义是这样哈,他判断的一个字步串是不是包含于某个元素的文本中。那你像我们现在写的这个条件就是 我显示等待五秒,每个零点五秒呢?去判断一下苏鹏这两个字是不是包含在 id 等于绿色一的这个元素的文本当中。如果是发挥为处,不是在设置的等待时间内哈,一直不是,一直不包含。那么最后呢?会超时报错。这是这个显示等待的含义。 那我们也试一下啊,我们可以执行一下。 yeah! 本次知识输入就到这里啦,你学会了吗?还有哪些疑问,评论区留言,将一一为大家解答。

selena mui 自动化测试只显示等待三?好,我们来看一下这个哈,显示我们的调调 with bility of elemental located。 那么他的用法呢?跟我们前面介绍过的那个 pleasens off 爱了他老黑提的呢啊,差不多,只不过呢,他对于元素的判断呢,会更加严谨一些。他的含义是这个判断呀,这个元素没有出现,而且这个元素呢长宽呢非零,而且呢非隐藏,这样的话呢,这个条件呢才会成立。 只不过呢,我们在实际应用的时候呢,可能感受不出这个区别呢,因为你像这个隐藏的元素啊,或者是这个长怀为零的元素啊,本身对用户来说的,他的界面是看不到的, 那么既然看不到呢,应该来说也是不需要用户去操作的。那么对于使用的情况下来说,用不到的元素呢,我们做自动化测试呢, 这种颜色呢,也基本上是用不到的,所以在使用使用实际使用的时候,这个 vis balato office, lucy 的和那个 pleasens office 的啊,几乎哈没有区别。 好,我们来执行一下, 本次知识输入就到这里啦,你学会了吗?还有哪些疑问,评论区留言将一一为大家解答。

selina mui 自动化测试只显示等待吧?好,我们再来看一下这两个显示的条件。第一个是 title is, 第二个呢是 title context。 那么第一个 title is 它的含义呢?是判断一下这个网 a 的标题是不是等于某个字母串儿, 哎,太多。康太斯呢?是判断一下网页的标题呢,是不是包含某个字母串啊。注意这两个啊,稍微有一点点区别。 那我们写的例子呢?就是显示等待五秒,每个零点五秒。判断一下这个呢,就是标题是不是等于后面这个足串。那么这个呢?就是判断一下这个标题是不是包含了这个后面这个足串。这就是两个哈,显示等待这个含义。 那么如果条件成立的话呢?法律值呢?也是为出好,可以执行一下。 本次知识输入就到这里啦,你学会了吗?还有哪些疑问,评论区留言,将一一为大家解答。

selina miui 自动化测试只显示等待 4。 好,我们再来看一下这个显示的条件哈。 flame to be available on the 思维是 tweet。 那么这个显示的条件含义是什么呢?就是判断呀,这个 flame 框架呀,是不是可以切入 哎,如果说可以切入的话,可以干什么?切进去。那么你像我们现在写的这一行代码的话呢?它的含义就是什么呢?我总共动态等待,或者说显示等待的六秒,每隔零点四秒。判断一下 idvifrem 消防员们的这个辅助框架能不能切入?切入进去能的话 也会切路。那么需要注意的是,这个显示的条件执行完成的话,那么这个框架呢?已经切进去了,是不需要什么呢?再切一次框架的 好,我们依然呢执行他一下。 本次知识输入就到这里啦,你学会了吗?还有哪些疑问,评论区留言,将一一为大家解答。

seleniomeui 自动化测试只显示等待六?好,我们再来看下这个显示等待条件, rat is present。 那么这个显示等待条件含义呢?是判断一下警告窗口呢有没有出现, 那么我们这里写的就是显示等待五秒,每个零点五秒呢,就判断一下啊警告窗口有没有出现,出现的话呢,我们会去获取这个警告窗户对象,把它复制给一个变量啊,接下来就可以用 dismiss 点击取消 sf 呢, 点击这个确定啊,这是这个显示灯的含义。好好,我们也是一样啊。执行了一下, 本次知识输入就到这里啦,你学会了吗?还有哪些疑问,评论区留言将一一为大家解答。

在这个 cink 当中怎么去保证操作元素的一个成功率呢?不知道。那第一个的话是尽量使用 css 定位,他执行的速度呢,会比其他的方法要更快,但是需要你有比较好的一个前端的知识。那么第二个的话,就是在使用等待的时候呢,尽量使用这个显示等待,少用这个 cink, 但是呢可以用这个 是等待加 sat 的这个组合。第三的话呢,就是尽量减少一些不必要的操作啊,可以直接访问这个页面的,就是需要通过点击操作访问啊,像并发执行测试用力的时候呢,需要注意用力间的一个偶和度。那有些页面加载时间比较长的话呢,可以考虑中断加载。