为什么要用等待时间:

  1. 今天在写App的自动化的脚本时发现一个元素,时而能点击,时而又不能点击到,很是心塞,原因是:因为元素还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了.解决方式:可以用等待,等元素加载完成后再执行查找元素语句。

Python里有三种等待的方式:

强制等待

 from time import sleep
sleep(10) # 表示强行等待10s在执行下一句代码
driver.findelementby(id) 这种等待方式时间到了就会执行下个语句,但比较死板,不能保证在等待的时间内元素真正被加载了出来。

隐性等待

  1. Implicitly_wait(xxx)
  2. 这个等待表示在规定的时间内页面的所有元素都加载完了就执行下一步,否则一直等到时间截止,然后再继续下一步。
  3. driver.implicitly_wait(10)#等待10s
  4. driver.find_element_by_id(common_util.get_id_value('IMAGEID')).click()
  5. 这个方法的缺点是你需要的元素已经加载出来了,但页面还没有加载完,再需要继续等待页面加载完才能执行下一步操作。

显性等待

  1. WebDriverWait,配合该类的until()和until_not()方法,表示程序每隔x秒去判断一下指定的元素是否加载完,加载完了就执行下一步,否则继续每隔x秒去判断,指定时间截止。如果超时就会抛出异常。
  2. 需要导入的包
  a)from selenium import webdriver  
  b)from selenium.webdriver.support.wait import WebDriverWait 
  c)from selenium.webdriver.support import expected_conditions as EC 
  d)from selenium.webdriver.common.by import By
  locator=(By.XPATH,”xxxxxxx”)
  d = webdriver.Chorme()
  d.get(“http://www.sina.com”)
  WebDriverWait(d,10,1).unitl(EC.presence_of_element_located(locator))

  WebDriverWait(driver, 30, 0.5).until(EC.visibility_of_element_located((By.ID,common_util.get_id_value('MYID'))))

3. 这里表示等待30s,每隔0.5s去检查一次元素是否出现,出现了就执行下一步,直到30s结束后还没有出现就会抛出异常。

实例讲解: https://www.cnblogs.com/yuuwee/p/6635652.html

参考博客: http://blog.51cto.com/laomomo/2073418

python+appium里的等待时间的更多相关文章

  1. Python + Appium 环境搭建

    ---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1    安装前准备工作 搭建环境所需要的安装文件已经下载好 ...

  2. Python+Appium环境搭建

    1.python环境搭建,这里就不做过多介绍 2.安装 node.js 2.1.官网下载node.js:https://nodejs.org/en/download/ 2.2.获取到安装文件后,直接双 ...

  3. (干货分享)mac python+appium环境搭建

    因为mac本自带python2.x(不建议卸载,因为本本本身有很多依赖与此),所以装python3的过程极其坎坷,勉强装好后也总是各种报错.这次装appium环境,直接把原来的python3卸了,用h ...

  4. Python +appium 封装desired_caps模块

    使用python+appium做android的自动化测试时,首先需要启动appium服务,然后连接上手机,配置如下: desired_caps = {"platformName" ...

  5. Python+Appium自动化测试(15)-使用Android模拟器(详细)

    做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景.但前期调试脚本的话,可以先使用模拟器,这样相对更加方便. 不推荐使用Android SDK里自带模拟器,太 ...

  6. Python+Appium自动化测试(1)-appium环境搭建

    用python+appium做appUI自动化测试,系统为Windows.首先是JDK与Android SDK的安装与环境变量的设置. 一,安装JDK,配置JDK环境变量 1,下载jdk jdk8官网 ...

  7. Python appium搭建app自动化测试环境

    appium做app自动化测试,环境搭建是比较麻烦的. 也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用. 在app自动化测试当中,我们主要是 ...

  8. Python程序里的注释和#号

    Python程序里的注释是很重要的.它们可以用自然语言告诉你某段代码的功能是什么.在你想要临时移除一段代码时,你还可以用注解的方式将这段代码临时禁用.接下来的练习将让你学会注释 : # A comme ...

  9. Python正则表达式里的单行re.S和多行re.M模式

    Python正则表达式里的单行re.S和多行re.M模式 Python 的re模块内置函数几乎都有一个flags参数,以位运算的方式将多个标志位相加.其中有两个模式:单行(re.DOTALL, 或者r ...

随机推荐

  1. C\S 架构 DNS服务器 交换机 路由器

    ------------------------只有不快的斧,没有劈不开的柴;只有想不到的人,没有做不到的事.想干总会有办法,不想干总会有理由!# -------------------------- ...

  2. 百度统计微信网站绑定(vue项目)

    *网站域名:----- *网站首页:----/index.html 下列代码放入index.html vue加百度统计代码(亲测有效)

  3. Windows 10正式版历代记:Version 和 Build 对应关系

    2017年10月中下旬,微软面向正式版用户推送了Windows 10创意者更新秋季版.这是自发布以来,Windows 10的第五个大版本. 在这篇文章中,我们来回顾一下Windows 10正式版的历史 ...

  4. StackWalk64

    #include <Windows.h>   #define  PULONG_PTR ULONG** #define  PULONG ULONG* #define  ULONG_PTR U ...

  5. C#封装SQLite数据库

    网上有许多介绍关于SQLite数据库的,这里我就不多说了,这里主要介绍SQLite数据库在C#中的应用,它的应用主要依赖于System.Data.SQLite.dll文件,可以点击这里下载https: ...

  6. C# Note19: Windows安装包制作实践

    前言 最近在项目中需要不断更新新版本的software installer(软件安装包),于是便查阅资料,整理了下制作方法. NSIS安装包制作脚本 NSIS(Nullsoft Scriptable ...

  7. js尾递归函数

    普通递归: function fac(n) { if (n === 1) return 1; return n * fac(n - 1); } fac(5) // 120 这是个阶乘.但是占用内存,因 ...

  8. 【gedit】 显示行号

    打开gedit文本编辑器->Edit(编辑)->preferences(预设)->view(视图)->在Display line numbers前打勾->close

  9. Hbase数据结构模型

  10. 本地git连接远程github

    git要连接GitHub仓库,是通过SSH加密连接的,所以必须要创建SSH key ssh-key -t rsa -C "youremail@example.com" 这里邮箱必须 ...