1、窗口切換
- 獲取打開的窗口句柄總數,返回的是一個列表
handles=driver.window_handles
- 切換到最新的窗口句柄
driver.switch_to.window(handles[-1])
- 操作代碼如下:
1 import time 2 from selenium import webdriver 3 from selenium.webdriver.support import expected_conditions as EC 4 from selenium.webdriver.support.wait import WebDriverWait 5 from selenium.webdriver.common.by import By 6 # 窗口切換操作 7 driver=webdriver.Chrome() 8 # 訪問一個網頁 9 driver.get("https://www.baidu.com") 10 driver.maximize_window() 11 driver.find_element_by_id('kw').send_keys("檸檬班") 12 driver.find_element_by_id('su').click() 13 WebDriverWait(driver,30).until(EC.visibility_of_element_located((By.XPATH,'//a[contains(text(),"吧_百度貼吧")]'))) 14 driver.find_element_by_xpath('//a[contains(text(),"吧_百度貼吧")]').click() 15 time.sleep(0.5)#等待0.5秒,確定點擊的網頁都打開 16 # 獲得打開瀏覽器的句柄,返回的是列表 17 handles=driver.window_handles 18 print(handles) 19 driver.switch_to.window(handles[-1]) 20 # 打印當前句柄 21 print(driver.current_window_handle) 22 # :Args: driver.switch_to.window(window_name) 23 # - window_name: The name or window handle of the window to switch to. 24 WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//div[@id='signstar_wrapper']//a[@title='簽到']")))#等待元素出現 25 driver.find_element_by_xpath("//div[@id='signstar_wrapper']//a[@title='簽到']").click() 26 WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.ID,"TANGRAM__PSP_11__footerULoginBtn"))) 27 driver.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn').click() 28 driver.find_element_by_id('TANGRAM__PSP_5__closeBtn').click()
2、判斷新的窗口是否已經打開使用
EC.new_window_is_opened(current_handles)
操作代碼如下:
1 import time 2 from selenium import webdriver 3 from selenium.webdriver.support import expected_conditions as EC 4 from selenium.webdriver.support.wait import WebDriverWait 5 from selenium.webdriver.common.by import By 6 # 窗口切換操作 7 driver=webdriver.Chrome() 8 # 訪問一個網頁 9 driver.get("https://www.baidu.com") 10 driver.maximize_window() 11 driver.find_element_by_id('kw').send_keys("檸檬班") 12 driver.find_element_by_id('su').click() 13 WebDriverWait(driver,30).until(EC.visibility_of_element_located((By.XPATH,'//a[contains(text(),"吧_百度貼吧")]'))) 14 # 獲取打開新頁面之前的窗口總的句柄 15 handles=driver.window_handles 16 driver.find_element_by_xpath('//a[contains(text(),"吧_百度貼吧")]').click() 17 time.sleep(0.5)#等待0.5秒,確定點擊的網頁都打開 18 # 等待新頁面打開 19 WebDriverWait(driver,20).until(EC.new_window_is_opened(handles)) 20 # 獲得打開瀏覽器的句柄,返回的是列表 21 handles=driver.window_handles 22 print(handles) 23 # 切換到新的句柄 24 driver.switch_to.window(handles[-1]) 25 # 打印當前句柄 26 print(driver.current_window_handle) 27 # :Args: driver.switch_to.window(window_name) 28 # - window_name: The name or window handle of the window to switch to. 29 WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//div[@id='signstar_wrapper']//a[@title='簽到']")))#等待元素出現 30 driver.find_element_by_xpath("//div[@id='signstar_wrapper']//a[@title='簽到']").click() 31 WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.ID,"TANGRAM__PSP_11__footerULoginBtn"))) 32 driver.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn').click() 33 driver.find_element_by_id('TANGRAM__PSP_5__closeBtn').click()