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()
  • 相关阅读:
    1.1 git和github -1 介绍
    seajs使用
    seajs使用-1 解决冲突和依赖
    6. 菜单切换
    5. 背景半透明 元素不透明(兼容所有浏览器)
    4. 父元素如何包含子元素
    3. js 多维数组转为一维数组
    2. 伪数组转为数组 Array.prototype.slice.call(arguments)
    3. 伪元素清除最后一个border的边框
    2. 详解 CSS 属性
  • 原文地址:https://www.cnblogs.com/wsk1988/p/12692265.html
Copyright © 2011-2022 走看看