zoukankan      html  css  js  c++  java
  • web元素定位中的三种等待方法

    1、强制等待,不管元素是否出现,一定会等待时间结束后,才进行下一步操作-->sleep
     1 import time
     2 from selenium import webdriver
     3 
     4 driver=webdriver.Chrome()
     5 
     6 # 访问一个网页
     7 driver.get("https://www.baidu.com")
     8 driver.maximize_window()
     9 # 点击登录按钮
    10 driver.find_element_by_xpath("//div[@id='u1']//a[@name='tj_login']").click()
    11 time.sleep(10)#等待10秒之后才会进行下面的操作
    12 driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click()
    13 #关闭浏览器
    14 driver.quit()

    2、隐形等待implicitly_wait(time),整个会话周期有效,从打开浏览器到关闭浏览器之间都有效(只需要设置一次就好,但是对于alert弹框,窗口切换不能使用)

     1 from selenium import webdriver
     2 
     3 driver=webdriver.Chrome()
     4 
     5 # 访问一个网页
     6 driver.get("https://www.baidu.com")
     7 driver.maximize_window()
     8 # 点击登录按钮
     9 driver.find_element_by_xpath("//div[@id='u1']//a[@name='tj_login']").click()
    10 
    11 # 等待下一个元素出现
    12 # 1、强制等待
    13 # time.sleep(10)
    14 # 2、隐形等待implicitly_wait,整个会话周期有效,从打开浏览器到关闭浏览器之间都有效
    15 driver.implicitly_wait(30)
    16 
    17 driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click()
    18 
    19 driver.quit()

    3、显性等待WebDriverWait,明确等到某个条件满足之后,再去执行下一步操作,程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException

     1 from selenium import webdriver
     2 from selenium.webdriver.support.wait import WebDriverWait
     3 from selenium.webdriver.support import expected_conditions as EC
     4 from selenium.webdriver.common.by import By
     5 driver=webdriver.Chrome()
     6 
     7 # 访问一个网页
     8 driver.get("https://www.baidu.com")
     9 driver.maximize_window()
    10 # 点击登录按钮
    11 driver.find_element_by_xpath("//div[@id='u1']//a[@name='tj_login']").click()
    12 
    13 # 等待下一个元素出现
    14 # 1、强制等待
    15 # time.sleep(3)
    16 # 2、隐形等待implicitly_wait,整个会话周期有效,从打开浏览器到关闭浏览器之间都有效
    17 # driver.implicitly_wait(30)
    18 
    19 # 3、显性等待WebDriverWait,明确等到某个条件满足之后,再去执行下一步操作,程序每隔xx秒看一眼,如果条件成立了,
      #则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException
    20 WebDriverWait(driver,30).until(EC.visibility_of_element_located((By.ID,"TANGRAM__PSP_10__footerULoginBtn"))) 21 22 driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click() 23 24 driver.quit()
  • 相关阅读:
    day13-web前端之JS与JQuery
    day16-python项目Django框架之基础
    day12-HTML、CSS与blog页面讲解
    day11-MySQL数据操作索引备份触发器
    day10-python并发编程之多线程协程及MySQL
    day9-python并发编程之多进程多线程
    day8-异常处理与网络编程
    面向对象实战扩展(课外阅读)
    day7-面向对象之继承组合多态封装等
    python学习大纲
  • 原文地址:https://www.cnblogs.com/wsk1988/p/12692265.html
Copyright © 2011-2022 走看看