from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')# 1. 定长等待
time.sleep(3)
driver.find_element_by_id('kw').send_keys('hello')
time.sleep(3)print('sleep完啦')# 2. 隐式等待# 找到了就立刻返回,不是必须等完10秒# 特点:运行效率高,节省时间
driver.implicitly_wait(10)# 清楚数据
driver.find_element_by_id('kw').clear()
driver.implicitly_wait(10)
driver.find_element_by_id('kw').send_keys('你好')print('implicitly完啦')# 3. 显式等待try:
element = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'su')))print('webDriverWait元素加载结束啦')
element = WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.ID,'su')))print('webDriverWait所有满足条件的元素加载结束啦')
element = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID,'su')))print('webDriverWait满足条件的元素可以点击啦')finally:
driver.quit()
2. selenium多窗口
当需要打开多个窗口时:
.execute_script(‘window.open(“url”)’)
新打开的窗口会被放到当前index值为[0]的窗口后边
当需要对多个窗口进行操作时:
.switch_to.window(driver.window_handles[索引值])
当需要关闭当前页面时:
.close()
当需要关闭所有页面时:
.quit()
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')# 会覆盖百度的页面# driver.get('https://www.douban.com')
time.sleep(2)# 会打开新的标签页面,可以理解为另外开的
driver.execute_script('window.open("https://www.douban.com")')
time.sleep(2)# 新打开的会被放在主页面[0]的后边,也就是百度关闭前始终是[0],搜狐是[1],豆瓣是[2]
driver.execute_script('window.open("https://www.sohu.com")')
time.sleep(2)# 操作会对当前页面进行操作
driver.find_element_by_id('kw').send_keys('哈哈,我是当前页面')
time.sleep(2)# 关闭了当前页面,也就是第一个get的页面,只有这个才是当前页面# driver.close()# target window already closed from unknown error: web view not found# 第二次关闭会提示页面已关闭,找不到该页面print('-'*50)# 切换窗口 switch_to.windows切换
driver.switch_to.window(driver.window_handles[0])print(driver.current_url)
driver.switch_to.window(driver.window_handles[1])print(driver.current_url)
driver.switch_to.window(driver.window_handles[2])print(driver.current_url)print('-'*50)# 在这个位置关闭了主页面以后,百度会变成[0],搜狐会变成[1]# 因为当前切换到的主页面[2]豆瓣,已经被关闭
driver.close()
driver.switch_to.window(driver.window_handles[0])print(driver.current_url)
driver.switch_to.window(driver.window_handles[1])print(driver.current_url)print('-'*50)
time.sleep(2)# 关闭所有页面
driver.quit()