• 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()
  • 相关阅读:
    努力的一分不会少
    C语言中的数组的访问方式
    代码的规划与规范化
    Manjaro中源码安装gcc7.1
    周围都是敌人,方法总比问题多
    elementary os 0.4.1下编译GCC-7.1源码并安装成功
    C语言中的基础知识变量探讨
    19年的桌面KDE的风雨和陪伴,没有什么能够割舍
    《手把手教你学C语言》学习笔记(10)--- 程序的循环控制
    copy 的实现原理与深浅拷贝
  • 原文地址:https://www.cnblogs.com/wsk1988/p/12692265.html
Copyright © 2020-2023  润新知