from selenium import webdriver import time from selenium.webdriver.support.wait import WebDriverWait import selenium.webdriver.support.expected_conditions as EC from selenium.webdriver.common.by import By """ 元素等待方法 1.隐式等待(针对所有元素设置最长的等待时间) 设置完隐式等待之后,后面的所有元素查找使用的方式都是一样。 优点: 当某些元素可能会由于加载时间 不能定位到元素,这类元素可以通过元素的隐式等待来解决。 缺点:当有比较多的元素被更改,无形中会增加整个自动化脚本运行的时间。 """ # 访问https://www.juhe.cn/ ,打开网页过一会才会弹出注册弹框 driver = webdriver.Chrome(executable_path='../../drivers/chrome89/chromedriver') # # 设置全局等待时间最长等待10秒, 在10秒内找到元素 假设第5秒的时候找到元素,后面5秒就不再等待 # driver.implicitly_wait(10) # # driver.get('https://www.juhe.cn/') # # 记录开始时间(单位:s) # start = time.perf_counter() # ele = driver.find_element_by_id("layui-layer-iframe1") # # 记录结束时间 # end = time.perf_counter() # print('注册弹框显示用时:',end-start,' 弹框坐标:',ele.rect) """ 2.显式等待(针对单个元素设置最长的等待时间) """ driver.get('https://www.juhe.cn/') # 实例化类 针对单个元素设置最长等待时间为10秒 web_wait = WebDriverWait(driver,timeout=10) start = time.perf_counter() # 添加条件,根据id查找元素,元素加载出来 web_wait.until(EC.presence_of_element_located((By.ID,'layui-layer-iframe1'))) end = time.perf_counter() print(f'注册弹框显示用时:{end-start}s') # driver.quit() # 关闭程序运行时打开的自动化测试浏览器窗口