web自動化中的三種切換--窗口切換


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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM