selenium常見元素操作之窗口切換
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
import time
一、打開瀏覽器
driver = webdriver.Chrome()
二、登錄到百度首頁
driver.get(“http://www.baidu.com”)
三、輸入檸檬班並點擊百度一下
driver.find_element_by_id(‘kw’).clear() #清除文本
driver.find_element_by_id(‘kw’).send_keys(“檸檬班”) #輸入檸檬班
driver.find_element_by_id(‘su’).click() #點擊百度一下
四、等待
locator = (By.XPATH,’//a[text()="_騰訊課堂官網"]’)
WebDriverWait(driver,20).until(EC.visibility_of_element_located(locator))
五、點擊 “檸檬班_騰訊課堂官網”,打開新的窗口
#方式一:driver.find_element_by_xpath(’//a[text()="_騰訊課堂官網"]’).click()
#方式二:driver.find_element_by_xpath(*locator).click()
driver.find_element(*locator).click()
六、切換窗口
方式一:
step1.獲取所有的窗口
#handles = driver.window_handles
##print(handles) #按照窗口出現的順序,最後一個就是最近打開的窗口。
##print(driver.current_window_handle)#拿到當前窗口的handles
step2.切換新的窗口
#driver.switch_to.window(handles[-1])
##print(“切換之後的窗口是:”,driver.current_window_handle)
方式二:
step1:獲取當前窗口數
handles = driver.window_handles #只有1個窗口
step2:執行打開新窗口的操作
driver.find_element(*locator).click() #本操作帶來了新窗口的出現—>2個窗口
step3:確認新的窗口出現了,再去操作,等待新窗口出現
#EC.new_window_is_opened #比窗口總數的大小 #傳一個窗口總數
WebDriverWait(driver,20).until(EC.new_window_is_opened(handles)) #比較窗口數2>1 #確認新窗口出現
step4:再次獲取窗口的handles
handles = driver.window_handles #2個窗口
step5:切換到新窗口
driver.switch_to.window(handles[-1])
七、新的窗口當中,點擊"課程"
#等待
locator1 = (By.XPATH,’//section//h2[contains(text(),“課程”)]’) #定位到課程菜單
WebDriverWait(driver,20).until(EC.visibility_of_element_located(locator1)) #等待課程菜單出現
driver.find_element(*locator1).click() #點擊課程菜單