1. #coding=utf-8
  2. from selenium import webdriver
  3. from selenium.webdriver.common.by import By
  4. from selenium.webdriver.support import expected_conditions as EC
  5. from selenium.webdriver.support.wait import WebDriverWait
  6.  
  7. base_url = "http://www.baidu.com"
  8. driver = webdriver.Firefox()
  9. driver.implicitly_wait(5)
  10. '''隐式等待和显示等待都存在时,超时时间取二者中较大的'''
  11. locator = (By.ID,'kw')
  12. driver.get(base_url)
  13.  
  14. WebDriverWait(driver,10).until(EC.title_is(u"百度一下,你就知道"))
  15. '''判断title,返回布尔值'''
  16.  
  17. WebDriverWait(driver,10).until(EC.title_contains(u"百度一下"))
  18. '''判断title,返回布尔值'''
  19.  
  20. WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))
  21. '''判断某个元素是否被加到了dom树里,并不代表该元素一定可见,如果定位到就返回WebElement'''
  22.  
  23. WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,'su')))
  24. '''判断某个元素是否被添加到了dom里并且可见,可见代表元素可显示且宽和高都大于0'''
  25.  
  26. WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(by=By.ID,value='kw')))
  27. '''判断元素是否可见,如果可见就返回这个元素'''
  28.  
  29. WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.mnav')))
  30. '''判断是否至少有1个元素存在于dom树中,如果定位到就返回列表'''
  31.  
  32. WebDriverWait(driver,10).until(EC.visibility_of_any_elements_located((By.CSS_SELECTOR,'.mnav')))
  33. '''判断是否至少有一个元素在页面中可见,如果定位到就返回列表'''
  34.  
  35. WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.XPATH,"//*[@id='u1']/a[8]"),u'设置'))
  36. '''判断指定的元素中是否包含了预期的字符串,返回布尔值'''
  37.  
  38. WebDriverWait(driver,10).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR,'#su'),u'百度一下'))
  39. '''判断指定元素的属性值中是否包含了预期的字符串,返回布尔值'''
  40.  
  41. #WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it(locator))
  42. '''判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False'''
  43. #注意这里并没有一个frame可以切换进去
  44.  
  45. WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.CSS_SELECTOR,'#swfEveryCookieWrap')))
  46. '''判断某个元素在是否存在于dom或不可见,如果可见返回False,不可见返回这个元素'''
  47. #注意#swfEveryCookieWrap在此页面中是一个隐藏的元素
  48.  
  49. WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='u1']/a[8]"))).click()
  50. '''判断某个元素中是否可见并且是enable的,代表可点击'''
  51. driver.find_element_by_xpath("//*[@id='wrapper']/div[6]/a[1]").click()
  52. #WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='wrapper']/div[6]/a[1]"))).click()
  53.  
  54. #WebDriverWait(driver,10).until(EC.staleness_of(driver.find_element(By.ID,'su')))
  55. '''等待某个元素从dom树中移除'''
  56. #这里没有找到合适的例子
  57.  
  58. WebDriverWait(driver,10).until(EC.element_to_be_selected(driver.find_element(By.XPATH,"//*[@id='nr']/option[1]")))
  59. '''判断某个元素是否被选中了,一般用在下拉列表'''
  60.  
  61. WebDriverWait(driver,10).until(EC.element_selection_state_to_be(driver.find_element(By.XPATH,"//*[@id='nr']/option[1]"),True))
  62. '''判断某个元素的选中状态是否符合预期'''
  63.  
  64. WebDriverWait(driver,10).until(EC.element_located_selection_state_to_be((By.XPATH,"//*[@id='nr']/option[1]"),True))
  65. '''判断某个元素的选中状态是否符合预期'''
  66. driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click()
  67.  
  68. instance = WebDriverWait(driver,10).until(EC.alert_is_present())
  69. '''判断页面上是否存在alert,如果有就切换到alert并返回alert的内容'''
  70. print instance.text
  71. instance.accept()
  72.  
  73. driver.close()

【转】python selenium2 中的显示等待WebDriverWait与条件判断expected_conditions举例的更多相关文章

  1. python selenium2 中的显示等待WebDriverWait与条件判断expected_conditions举例

    #coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium. ...

  2. selenium中的三种等待方式(显示等待WebDriverWait()、隐式等待implicitly()、强制等待sleep())---基于python

    我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中 ...

  3. Python第四天 流程控制 if else条件判断 for循环 while循环

    Python第四天   流程控制   if else条件判断   for循环 while循环 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Python第二天 ...

  4. selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等

    selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...

  5. 显示等待WebDriverWait

    显示等待:WebDriverWait 等待页面加载完成,找到某个条件发生后再继续执行后续代码,如果超过设置时间检测不到则抛出异常 WebDriverWait(driver, timeout, poll ...

  6. 显示等待WebDriverWait+EC

    参考:https://www.cnblogs.com/yoyoketang/p/6538505.html 百度搜索关键字,等待搜索结果页面显示完成后,验证搜索结果的第一条记录 通过WebDriverW ...

  7. 显示等待WebDriverWait+lambda

    代码,关键代码标红 参考文章:https://www.cnblogs.com/yoyoketang/p/6517477.html #coding:utf-8 ''' 这里写了一个百度搜索页的pageo ...

  8. Python基础 整形、布尔值、if条件判断、while循环、运算符、格式化输出

    1,计算机基础.2,python历史. 宏观上:python2 与 python3 区别: python2 源码不标准,混乱,重复代码太多, python3 统一 标准,去除重复代码.3,python ...

  9. shell脚本中,关于if,以及条件判断

    #!/bin/sh SYSTEM=`uname -s` #获取操作系统类型 if [ $SYSTEM = "Linux" ] ; then #如果是linux的话打印linux字符 ...

随机推荐

  1. ES6中let、const和var的区别

    一.let 1.基本用法 ES6 新增了let命令,用来声明变量. let 的用法类似于 var,但所声明的变量只在 let 命令所在的代码块内有效(一个“{}”相当于一个代码块) { let a = ...

  2. 企业级本地yum源配置方案详解

    因目前企业生产网络禁止联网,对于使用Linux的我们来说,非常不方便,想要使用yum源都很困难,挂dvd又不能完全满足要求,所以自建一个企业级的yum源,定时从公网同步到本地,然后生产网络直接配置在本 ...

  3. SVN工作区同步

    单击“团队同步”菜单项或“团队同步”视角的“团队”工具栏上的“同步”按钮后,“同步视图”中将显示SVN工作区同步.它提供了从远程检查本地副本的更改类型的概率. 这是“同步视图”中的 “SVN工作空间同 ...

  4. 洛谷P1050 循环【java大数】

    题目:https://www.luogu.org/problemnew/show/P1050 题意:给定一个数$n$,问$n$的幂次的最低$k$位的循环节是多少. 思路:这真是我做过最难的java大数 ...

  5. HDU-1398-Square Coins(母函数)

    链接: https://vjudge.net/problem/HDU-1398 题意: People in Silverland use square coins. Not only they hav ...

  6. 010——C#选择文件路径

    (一)具体教程查看:011——C#创建ECXEL文件(附教程) (二)代码:foldPath 就是获取到的文件路径 private void button1_Click(object sender, ...

  7. YARN构建--解决cypress下载慢问题

      背景 注意:      此方案仅适合已经自行搭建私有仓库的用户使用      如非必要,尽可能使用软件开发云或其他服务提供的镜像站,避免此类特殊处理(会导致仓库维护成本增加) 场景描述 YARN构 ...

  8. 070_Shell 脚本对信号的处理,执行脚本后,按键盘 Ctrl+C 无法终止的脚本

    #!/bin/bash#使用 trap 命令可以拦截用户通过键盘或 kill 命令发送过来的信号#使用 kill -l 可以查看 Linux 系统中所有的信号列表,其中 2 代表 Ctrl+C#tra ...

  9. 爬虫(十七):scrapy分布式原理

    一:scrapy工作流程 scrapy单机架构: 单主机爬虫架构: 分布式爬虫架构: 这里重要的就是我的队列通过什么维护?这里一般我们通过Redis为维护,Redis,非关系型数据库,Key-Valu ...

  10. python 列表 【基本使用功能】

    #!/usr/bin/python # -*- coding: UTF-8 -*- # by Mercury_Lc list1 = list # 开个新的列表的方法 list2 = [] list1 ...