selenium 打開新標簽操作
簡單說一下使用
環境 :python 3.9 selenium 4,18
初始化操作 目的
打開bilibilie網站并搜索視頻(電影) 并點擊觀看
操作
打開應用并搜索網址
from selenium import webdriver
import timefrom selenium.webdriver.common.by import ByopenChart = webdriver.Chrome()
openChart.get('https://www.bilibili.com/')
元素定位 操作
個人使用的xpath
openChart.find_element(By.XPATH, '//*[@id="nav-searchform"]/div[1]/input').send_keys('我愛你')
openChart.find_element(By.XPATH, '//*[@id="nav-searchform"]/div[2]').click()
打開新頁面
有的也免回重新打開一個新頁面 然后就獲取不到元素定位了 容易發生找不到的現象
所以 有下面的操作
openChart.switch_to.window(openChart.window_handles[-1]) # 跳轉到不同頁面下的新頁面.
time.sleep(1) # 延長時間確保能捕捉到.
查詢元素點擊 并關閉
openChart.find_element(By.PARTIAL_LINK_TEXT, "立即觀看").click()
time.sleep(10)
openChart.close()
要點:
openChart.window_handles[-1] 中的 [-1] 就是 Python 中列表的索引,表示獲取這個列表的最后一個元素。也就是說,openChart.window_handles[-1] 返回的就是最新打開的窗口或者標簽頁的句柄。然后 openChart.switch_to.window() 函數就可以用這個句柄來切換到這個新打開的窗口或者標簽頁。
所以,openChart.switch_to.window(openChart.window_handles[-1]) 就是將控制權切換到最新打開的窗口或標簽頁
在Selenium中, window_handles 是一個列表,它包含當前瀏覽器進程中所有打開的窗口和標簽頁的句柄(相當于ID或者指針)。這些句柄按照它們被打開的順序存儲在列表中。所以 window_handles[0] 就代表第一個打開的窗口或標簽頁的句柄。
當你使用 openChart.switch_to.window(openChart.window_handles[0]) 的時候,Selenium會切換回到最初打開的那個窗口或標簽頁