webdriver中的三大等待及窗口的切换
2021-04-12 13:28
标签:适用于 ref cte pytho port 带来 color print new 一、傻等 适用于等待5S以内 time.sleep(seconds) 二、隐性等待 implicitly_wait(30) 一个会话只需要调用一次即可,设置等待上限,比如30S,如果你在30秒内元素出现了,就不等了,去执行下一行代码,如果30秒还没有出现,就报错,超时 webdriver中的三大等待及窗口的切换 标签:适用于 ref cte pytho port 带来 color print new 原文地址:https://www.cnblogs.com/llqxixi/p/12391826.htmldriver = 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()