(selenium+python)_UI自動化03_定位新開窗口內元素

前言

瀏覽器點擊web網站鏈接時,經常在當前窗口的基礎上打開另一個新的窗口。如下:

selenium定位新窗口元素,需要先切換到新窗口,再定位元素,否則會出現報錯“NoSuchElementException: Message: no such element...”

定位新窗口元素

1,獲得窗口句柄

driver.current_window_handle  # 獲得當前窗口句柄

driver.window_handles  # 獲得所有窗口句柄

2,切換至新窗口

all_pages = driver.window_handles  # 獲得所有窗口句柄

driver.switch_to.window(all_pages[-1])  # 切換至最後一個窗口

3,定位元素

切換至新窗口後,正常定位元素即可

返回定位原有頁面

1,切換回原有頁面

all_pages = driver.window_handles  # 獲得所有窗口句柄

driver.switch_to.window(all_pages[-1])  # 切換至最後一個窗口

2,定位元素

切換回原有窗口後,正常定位元素即可

實例

備註:以京東首頁-打開我的訂單窗口爲實例

 1 # 京東定位新開窗元素實例
 2 from selenium import webdriver
 3 from time import sleep
 4 
 5 driver = webdriver.Chrome()
 6 driver.get('https://www.jd.com/')  #打開京東
 7 sleep(2)
 8 
 9 driver.find_element_by_xpath('//*[text()="我的訂單"]').click()  # 點擊我的訂單
10 sleep(3)
11 
12 all_pages = driver.window_handles  # 獲取所有窗口句柄
13 print("order page:", all_pages)
14 
15 driver.switch_to.window(all_pages[-1])  # 切換至我的訂單窗口
16 bottom = driver.find_element_by_class_name("links").text  # 獲得我的訂單頁-底欄文描
17 print("我的訂單-底欄:", bottom)
18 driver.close()  # 關閉當前窗口-即我的訂單頁
19 
20 driver.switch_to.window(all_pages[0])
21 driver.find_element_by_xpath('//*[contains(text(),"優惠券")]').click()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章