expected_conditions模块:

  • 是Selenium的一个子模块,selenium.webdriver.support.expected_conditions

  • 可以对网页上元素是否存在进行判断,一般用于断言或与WebDriverWait配合使用

     1 import time
    2 from selenium import webdriver
    3 from selenium.webdriver.support.wait import WebDriverWait
    4 from selenium.webdriver.support import expected_conditions as EC
    5 from selenium.webdriver.common.by import By
    6
    7
    8 class Expected_Conditions:
    9 # expected_conditions模块用法汇总
    10 def __init__(self):
    11 self.driver = webdriver.Chrome()
    12 self.driver.get("https://www.baidu.com")
    13 self.driver.maximize_window()
    14 time.sleep(2)
    15 # 判断当前页面的title
    16 WebDriverWait(self.driver, 2).until(EC.title_is("百度一下,你就知道"))
    17 # 判断定位元素
    18 element = WebDriverWait(self.driver, 2).until(EC.visibility_of(self.driver.find_element(By.ID, 'kw')))
    19 element.send_keys('中彦引擎')
    20 time.sleep(2)
    21
    22 # 判断当前页面的title是否包含预期字符串,返回布尔值
    23 WebDriverWait(self.driver, 10).until(EC.title_contains('new'))
    24
    25 # 判断当前页面的url是否精确等于预期,返回布尔值
    26 WebDriverWait(self.driver, 10).until(EC.url_contains('https://www.baidu.com'))
    27
    28 # 判断当前页面的url是否包含预期字符串,返回布尔值
    29 WebDriverWait(self.driver, 10).until(EC.url_contains('baidu'))
    30
    31 # 判断当前页面的url是否满足字符串正则表达式匹配,返回布尔值
    32 WebDriverWait(self.driver, 10).until(EC.url_matches('.+baidu.+'))
    33
    34 # 判断元素是否出现,只要有一个元素出现,返回元素对象
    35 WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, 'kw')))
    36
    37 # 判断元素是否可见,返回元素对象
    38 WebDriverWait(self.driver, 10).until(EC.visibility_of(self.driver.find_element(By.ID, 'kw')))
    39
    40 # 判断元素是否包含指定文本,返回布尔值
    41 WebDriverWait(self.driver, 10).until(EC.text_to_be_present_in_element((By.NAME, 'tj_trnews'), '新闻'))
    42
    43 # 判断该是否可以switch进去,如果可以的话,返回True并且switch进去
    44 WebDriverWait(self.driver, 10, ).until(EC.frame_to_be_available_and_switch_to_it(By.XPATH, '// '))
    45
    46 # 判断某个元素是否可见并且是可点击的,如果是的就返回这个元素,否则返回
    47 WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.NAME, 'tj_trnews')))
    48
    49 # 判断某个元素是否被选中,一般用在下拉列表
    50 WebDriverWait(self.driver, 10).until(
    51 EC.element_to_be_selected(self.driver.find_element(By.XPATH, '//input[@type="checkbox"]')))
    52
    53 # 判断页面上是否存在
    54 WebDriverWait(self.driver, 10).until(EC.alert_is_present())
    55
    56 self.driver.quit()
    57
    58
    59 if __name__ == "__main__":
    60 Expected_Conditions()

最新文章

  1. 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
  2. 【HTML5】canvas画布练习
  3. Mysql 启动不了,问题集锦
  4. 关于phpcms v9投票模块选项排序listorder设定问题
  5. C++ transform
  6. CentOS6.5系统软件仓库及挂载NTFS
  7. uboot完全手册---14
  8. Android编程小实验
  9. java实现Composite(组合)模式
  10. Android handler 报错处理Can't create handler inside thread that has not called Looper.prepare()
  11. apache的FileUtils方法大全
  12. Linux中fork()函数详解(转)
  13. 【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例
  14. 浅谈IT企业挑选技术人员招聘几个要点
  15. 启用k8s metrics server监控
  16. ElasticSearch query_string vs multi_match cross_fields query
  17. 翻译 | Improving Distributional Similarity with Lessons Learned from Word Embeddings
  18. 吴恩达机器学习笔记26-样本和直观理解1(Examples and Intuitions I)
  19. CF1140E Palindrome-less Arrays
  20. [No000014E]提问的智慧How To Ask Questions The Smart Way

热门文章

  1. linux命令与公私钥
  2. 【随笔记】linux usb gadget ncm wrong ndp sign 问题修复
  3. MySQL 如何实现数据插入
  4. Grafana 系列文章(十二):如何使用Loki创建一个用于搜索日志的Grafana仪表板
  5. Stochastic Methods in Finance (1)
  6. SQL优化的七个方面
  7. 真正“搞”懂HTTP协议13之HTTP2
  8. Vue27 scoped样式
  9. .net core 读取配置文件的几种方式
  10. ROS入门:小海龟实验