zoukankan      html  css  js  c++  java
  • selenium等待的三种方式和排查定位的步骤

    做UI自动化时会遇到服务环境不稳定、网络环境不稳定,访问一个页面要加载好久都没出来,导致页面还没有打开就报错了,这时用到等待
    等待有三种方式:
    普通人用time等待(最不可取)
    聪明人用隐式等待 driver.implicitly_wait()
    # 隐式等待是针对整个项目的,driver生成的时候写一遍就行了,写在get之后,不建议使用
    大神用显示等待 WebDriverWait
    # from selenium.webdriver.support.wait import WebDriverWait
    # from selenium.webdriver.support import expected_conditions as EC
    # 不间断扫描dom,保证元素第一次出现后,不再做无谓的等待,如果用time就会比较死,按照规定的时间等待

    WebDriverWait(driver, 10, 1).until(EC.presence_of_element_located((By.ID, 'i1')))  # 了解until
    EC.presence_of_element_located((By.ID,'i1'))  # 判断以ID形式定位的元素是否出现在dom树中,返回true or false,until里面如果是true就继续执行,如果是false过1秒后再次判断EC.presence_of_element_located((By.ID, 'i1'))是true还是false,当超过10秒时整体WebDriverWait会报一个TimeoutException

    当你遇到一个定位不到的问题,怎么去排查:
    1、分清html,看清楚哪些是我们要用的唯一属性
    2、看清父子级关系
    3、有没有浏览器的tab要切换
    4、排查有没有iframe
    5、排查这元素在代码调用打开时,页面是否渲染了
    6、排查你定位的元素是否有display
    7、不用显示等待,用time调式方式,确保元素可以点击
    8、看你的操作是不是需要连贯的操作
    9、考虑是不是我的定位方式写错了

  • 相关阅读:
    ajax怎么打开新窗口具体如何实现
    关于springcloud hystrix 执行 hystrix.stream 跳转失败的问题
    Zookeeper 和Eureka比较
    Maven Install报错:Perhaps you are running on a JRE rather than a JDK?
    Oracle11g卸载步骤
    Oracle数据库备份及恢复
    python是如何进行内存管理的?
    python面试题
    json模块与hashlib模块的使用
    随机验证码、打印进度条、文件copy脚本
  • 原文地址:https://www.cnblogs.com/laosun0204/p/9073103.html
Copyright © 2011-2022 走看看