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、考虑是不是我的定位方式写错了

  • 相关阅读:
    从 i++ 和 ++i 说起局部变量表和操作数栈
    数据库连接情况查询相关sql语句
    db2相关语句
    BeanUtils源码详解
    Spring注解驱动开发之AOP
    Spring注解驱动开发之IOC
    正则表达式
    linux特殊符号
    linux下面如何让一个软件/命令开机自启动
    linux文件属性
  • 原文地址:https://www.cnblogs.com/laosun0204/p/9073103.html
Copyright © 2011-2022 走看看