webdriver中的三大等待及窗口的切换

一、傻等

适用于等待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 webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from 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_handles
print(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()
# 切回去的
driver.switch_to.window(wins[0]) # 回到主窗口。

 





原文地址:https://www.cnblogs.com/llqxixi/p/12391826.html