一、傻等
适用于等待5S以内
time.sleep(seconds)
二、隐性等待
implicitly_wait(30) 一个会话只需要调用一次即可,设置等待上限,比如30S,如果你在30秒内元素出现了,就不等了,去执行下一行代码,如果30秒还没有出现,就报错,超时
driver = webdriver.Chrome()driver.implicitly_wait(30) driver.get("http://www.baidu.com") driver.find_element_by_id("kw").send_keys("博客园")
driver.find_element_by_id("su").click() 三、显性等待
条件:等待 ‘//a[text()="_腾讯课堂"]‘ 可见之后,我再点击它3.1、等待操作 3.2、条件:可见30秒时间 1秒去检查一次,元素是否可见===周期
from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By driver = webdriver.Chorme()driver.get(https://www.baidu.com/)
# 访问百度首页driver.get("https://www.baidu.com/")# 获取窗口数量handles = driver.window_handles# 清除输入框的信息driver.find_element_by_id("kw").click()# 输入腾讯课堂driver.find_element_by_id("kw").send_keys("腾讯课堂")# 点击百度一下driver.find_element_by_id("su").click()# 显性等待条件表达loc = (By.XPATH,‘//div[@id="1"]//h3/a[contains(text(),"职业培训")]‘)# 显性等待 等到这个元素出现WebDriverWait(driver,20).until(EC.visibility_of_element_located(loc))# 进入官网,本操作带来了新窗口的出现driver.find_element(*loc).click()# 确认新窗口出现了再去做其他操作WebDriverWait(driver,20).until(EC.new_window_is_opened(handles))# 再次获取窗口的数量handles = driver.window_handlesprint(handles) # 打印窗口信息# 切换到新窗口driver.switch_to.window(handles[-1])print(driver.current_window_handle)# 等待界面可见# loc = (By.XPATH,‘//div[@class="header-index-category-text"]‘)loc = (By.XPATH,‘//input[@class="mod-search__input"]‘) WebDriverWait(driver,15).until(EC.visibility_of_element_located(loc))# 在输入框输入python# driver.find_element(*loc).click()driver.find_element(*loc).send_keys("python")# 点击搜索driver.find_element_by_xpath(‘//i[@class= "icon-font i-search-bold"]‘).click()
原文地址:https://www.cnblogs.com/llqxixi/p/12391826.html
时间: 2024-10-07 16:33:56