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()
  • 相关阅读:
    [ZT].Net中動態建立和調用WebServices的方法
    英文符号读法整理
    [ZT]SQL Server 的事务日志意外增大或充满的处理方法
    [ZT]Asp.net發布至英文服务器后出现的日期格式问题
    [ZT]如何取得客户端的Windows登录用户名?
    囧!一个盗版用户和微软客服的通话记录
    [轉帖]x.509证书在WCF中的应用(CS篇)
    [原創]關於VS“無法辨認的逸出序列”的錯誤分析和解決方法
    【原創】文件系統目錄文件快速複製轉移工具
    SQL2000/SQL2005導入導出存儲過程圖解
  • 原文地址:https://www.cnblogs.com/wsk1988/p/12692265.html
Copyright © 2011-2022 走看看