Web自动化测试 - 元素定位失败如何解决

发布时间 2023-12-28 18:01:22作者: 兜妈爱兜兜

首先要读懂失败的原因:

  • InvalidSelectorException 错误的定位表达式
  • Invalid...错误,大概率是脚本错误
  • NoSuch... 不存在
  • ...Not...无法操作
  • ...Intercepted...操作出现意外

错误:找出错误原因,改正错误即可

不存在:

  • 是否曾经存在
  • 是否未来存在 - 此时不存在,未来才会有
    有两种解决方法:1.休眠 - 使用编程语言提供的特性
    * input() 人工决定结束时间
    * sleep() 定时结束
    2.等待 - 使用selenium提供的特性
    - 隐式等待:
    driver.implicitly_wait(30)
    - 显式等待:
    WebDriverWait(driver,30).until(lambda x:driver.find_element(By.id,"std"))
    - 实例化对象
    - 调用until方法
    - 传递等待函数
    - 等待函数必须返回布尔值
    此处使用lambda匿名函数就是因为其不需要命名且必有返回值
    休眠和等待的最大差异:
    等待过程中会保持和外界的联系,如果等待的对象提前到达,name等待提前结束