首页 > 其他分享 >web自动化6---时间的等待

web自动化6---时间的等待

时间:2023-05-06 16:13:09浏览次数:32  
标签:web driver 默认 method --- 自动化 等待 until 加载

很多时候,页面没有加载出来,就进行了操作,导致报错

1、强制等待(不管页面有没有加载出来,都是等待这么长时间)

  import time

  time.sleep(5)

  "等待5秒,具体时间根据自己的情况,也可以是0.5"

  优点是简单,无需考虑太多。

  缺点是灵活性差,如果提前加载成功则浪费了时间,如果没有加载成功,则下一步的操作无法正常进行。

2、隐式等待(全局,但打开新的窗口时,需要重新设置隐式等待。)

  driver.implicitly_wait(time) #等待time秒


  隐式等待是指一个最长等待时间,如果在此时间内页面提前加载完成,则进行下一步操作;如果在规定时间内仍然未加载成功,则不再等待,下一步操作无法进行。

  优点是:这个方式的设置是对于整个driver周期的,所以一般在开头设置一次即可。

  缺点是:我们有时并不需要页面的全部元素加载成功,所以等待个别非目标元素加载时会浪费一些时间。

3、显式等待(某个特定的元素设置等待,参考即可)

  from selenium.webdriver.support.waitimport WebDriverWait

  from selenium.webdriver.supportimport expected_conditions

  WebDriverWait(  driver,  timeout,  poll_frequency=0.5,  ignored_exceptions=None  ).until(expected_conditions.title_is((by.id,"name"),"小红书"))

  """显式等待id是name的,title的值,小红书有没有出现"""

  

  

  

 

  在设置时间内,默认每隔一段时间检测一次当前某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException。

 

    1)参数解析:

        driver: 浏览器驱动

        timeout:最长超时时间,默认以秒为单位

        poll_frequency:检测的间隔步长,默认为0.5s

        ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。

    2) 一般与until/until_not配合使用;

            WebDriverWait(driver,10).until(method,message="")   调用该方法提供的驱动程序作为参数,直到返回值为True

            WebDriverWait(driver,10).until_not(method,message="")  调用该方法提供的驱动程序作为参数,直到返回值为False

注意点:

            1)until/until_not内需要传的method是函数名(不要带括号),该函数的返回值需要为true;

            2)until/until_not内需要传的method必须要有一个参数(如:x),用来接收driver,我们可以看到源码until这个函数的具体内容:

3) until/until_not需要传的method 使用selenium的内置的expected_conditions 

        

            expected_conditions 一般也简称为EC,有如下条件:

  

  

 

    这里用第7)条text_to_be_present_in_element举例 :

  等待页面的“登录”出现

 

标签:web,driver,默认,method,---,自动化,等待,until,加载
From: https://www.cnblogs.com/SparkProgram/p/17377667.html

相关文章

  • WEB|[BJDCTF2020]EasySearch
    扫描发现为index.php.swp源码泄漏<?php ob_start(); functionget_hash(){ $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-'; $random=$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[......
  • vue v-bind与v-model的区别
    1.v-bind是单向绑定,用来绑定数据和属性以及表达式,数据只能从data流向页面;v-model是双向绑定,数据能从data流向页面,也能从页面流向data。2.v-bind可以给任何属性赋值,v-model只能给表单类,也就是具有value属性的元素进行数据双向绑定,如input、text、radio、checkbox、selected。可以......
  • Mac M系列芯片 vue前端node-sass兼容问题解决
    0、由于M系列芯片是arm架构,在使用brew安装node时都是arm的node,但是[email protected]版本中不支持arm架构的出现如下报错:Error:NodeSassdoesnotyetsupportyourcurrentenvironment:OSXUnsupportedarchitecture(arm64)withUnsupportedruntime(88)Formoreinfor......
  • webservie 客户端读取服务器端日志例子(以网页展现)
    importjava.io.BufferedInputStream;下面是一个完整的servlet,直接复制它既可以使用,只需要修改红色部分路径即可,本例使用方法:在浏览器直接键入URL:即可展现日志,如下:http://localhost:8888/BPMDemo/BPMClientLogService?point=p1代码:importjava.io.BufferedReader;imp......
  • xshell登录服务器提示符显示-bash-4.2#解决方法
    xshell登录服务器提示符显示-bash-4.2#解决方法突然发现root登录的xshell的终端提示符显示的是-bash-4.2#而不是root@主机名+路径的显示方式。搞了半天也不知道为什么出现这种情况。今天终于搞定这个问题,原因是root在/root下面的几个配置文件丢失,丢失文件如下:1、.bash_pro......
  • WEB|[CISCN2019 华北赛区 Day1 Web5]CyberPunk
    看到有登录框想到可能存在注入,但是对每个页面都测试了并没有结果,看有提交订单页面和查询订单页面猜测可能会有二次注入,但是没有源码不好测试,然后查看网页源码也没发现什么看了下别人的wp,源码最后有提示<!--?file=?-->,可能存在文件包含,这个确实没有想到</body></html><!--?fi......
  • WEB|[CISCN2019 华北赛区 Day1 Web2]ikun
    访问页面注册帐户登录,提示要买到lv6,翻了好几页发现没得lv6的商品,写个脚本跑看看lv6商品在第几页importrequestsi=0whileTrue:i+=1url='http://40902fee-e0e5-4d7a-8b38-b16b5f97549b.node4.buuoj.cn:81/shop?page=%d'%(i)print(url)res=requ......
  • WEB|[CISCN2019 华北赛区 Day1 Web1]Dropbox
    注册帐号登录存在文件上传点,抓包上传文件,修改Content-Type后可以上传代码文件,但是后缀会变为图片后缀上传文件后有文件下载功能抓包发现filename直接曝露在内容中,试试下载其他文件,发现存在任意文件下载漏洞将已知文件都下载下来文件源码login.php<?phpsession_start......
  • WEB|[GYCTF2020]Ezsqli
    页面只有一个输入框,并且题目提示为SQL注入输入1输入2输入3输入1、2和3输出的内容不同,所以判断为布尔注入判断数据库长度为21,确认为布尔注入依次匹配字符,匹配成功返回输入1的页面,否则显示输入2的页面payload:id=if(length(database())=21,1,2)爆数据库名id=if(sub......
  • WEB|[GWCTF 2019]枯燥的抽奖
    页面提示需要输入以lw1ar7AWmn开头的20位字符串才能获得flag,查看页面源码发现check.php访问check.php,发现源码伪随机数mt_srand($_SESSION['seed']);$str_long1="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";$str='';$len1=20;for($i=0;$i......