欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?Selenium如何切換瀏覽器的頁面

 更新時間:2024年10月16日 10:41:24   作者:翠花上酸菜  
這篇文章主要介紹了Python?Selenium如何切換瀏覽器的頁面的相關(guān)資料,在使用Selenium進行網(wǎng)頁測試時,跳轉(zhuǎn)頁面后常會出現(xiàn)無法定位元素的問題,解決這一問題的關(guān)鍵是學會在多個瀏覽器標簽頁或窗口間切換,需要的朋友可以參考下

我們在爬網(wǎng)使用Selenium進行測試的時候,有時候想要點擊瀏覽器里面的網(wǎng)址,跳到另一個頁面上,獲取第二個頁面的內(nèi)容。


可是有時候從官網(wǎng)進去,點擊跳轉(zhuǎn)到下一個頁面以后,卻沒法定位到下一個頁面的元素,這時候就需要在多個瀏覽器標簽頁或窗口之間切換了,以下是切換瀏覽器頁面的方法,這里主要使用的是window_handles進行切換:

1. 獲取所有標簽頁句柄,并切換到特定標簽頁:

如果是需要點擊頁面的某個元素進入到下一頁,需要定位到跳轉(zhuǎn)下一個瀏覽器頁面的元素,點擊后,等待獲取所有的瀏覽器標簽頁的句柄。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 創(chuàng)建WebDriver實例,指定WebDriver的路徑
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

# 打開目標網(wǎng)頁
driver.get('https://XXX.com')

# 等待頁面加載完成,然后定位元素

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '')))
# 點擊元素
element.click()

# 等待新窗口打開,獲取新窗口的句柄
WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) > 1) 

使用driver.window_handles來獲取當前瀏覽器所有打開的標簽頁的句柄列表,這意味著可以看到當前的瀏覽器有多少個頁面,最后以列表的形式呈現(xiàn)出來。

tabs = driver.window_handles
print(tabs)
print(len(tabs)) #打印列表的個數(shù)

接著使用driver.switch_to.window()方法,傳入標簽頁句柄的位置,來切換到特定的標簽頁。

driver.switch_to.window(tabs[1])  # 切換到第二個標簽頁
driver.switch_to.window(tabs[2])  # 切換到第三個標簽頁

在新標簽頁中執(zhí)行完操作后,可以關(guān)閉它并返回到原來的標簽頁,否則如果打開過多,可能會導致計算機資源不足,從而影響其他應用程序的性能,甚至可能導致瀏覽器或操作系統(tǒng)變慢或崩潰。

driver.close()  # 關(guān)閉當前標簽頁
driver.switch_to.window(tabs[0])  # 切換回第一個標簽頁

2. 打開新標簽頁,并連接新的網(wǎng)址:

可以使用JavaScript來打開一個新標簽頁,并自動切換到新的空白標簽頁。

driver.execute_script("window.open();")

然后獲取新的標簽頁句柄并切換:

new_tab = driver.window_handles[-1]  # 新標簽頁通常是列表中的最后一個
driver.switch_to.window(new_tab)

然后連接目標的網(wǎng)址,最后關(guān)閉這個窗口并返回到原來的標簽頁。

driver.close()  # 關(guān)閉當前標簽頁
driver.switch_to.window(tabs[0])  # 切換回第一個標簽頁

3.示例代碼

點擊網(wǎng)頁元素,實現(xiàn)跳轉(zhuǎn)的代碼:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 創(chuàng)建WebDriver實例,指定WebDriver的路徑
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

# 打開目標網(wǎng)頁
driver.get('https://XXX.com')

# 等待頁面加載完成,然后定位元素

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '')))
# 點擊元素
element.click()

# 等待新窗口打開,獲取新窗口的句柄
WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) > 1) 

driver.switch_to.window(driver.window_handles[-1])  # 切換到新標簽頁
#進行下一步對新標簽頁的操作,此部分自行編輯

# 關(guān)閉新標簽頁并返回到原標簽頁
driver.close()
driver.switch_to.window(driver.window_handles[0])  # 切換回原標簽頁

# 關(guān)閉新窗口
driver.close()

# 最后,關(guān)閉瀏覽器
driver.quit()

新建空白窗口后,連接網(wǎng)址的代碼:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 創(chuàng)建WebDriver實例,指定WebDriver的路徑
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

# 打開目標網(wǎng)頁
driver.get('https://XXX.com')
sleep(3)

driver.execute_script("window.open();")
driver.switch_to.window(driver.window_handles[-1])  # 切換到新窗口

# 在新窗口中進行操作...
driver.get("http://www.XXX2.com")
sleep(3)

 # 切換回原標簽頁
driver.switch_to.window(driver.window_handles[0]) 

# 關(guān)閉新窗口
driver.close()

# 最后,關(guān)閉瀏覽器
driver.quit()

請注意,不同的瀏覽器可能在處理標簽頁和窗口時有細微的差別,在使用的過程中,注意瀏覽器的區(qū)別,上面使用的是谷歌瀏覽器。

附:定位單個網(wǎng)頁元素

1.1 通過 id 定位網(wǎng)頁元素

import time
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

driver = webdriver.Chrome() # 打開 chrome 瀏覽器
driver.get("https://www.baidu.com/")

input = driver.find_element(By.ID,"kw")
input.send_keys('大數(shù)據(jù)就業(yè)前景')
input.send_keys(Keys.ENTER)
time.sleep(10)
driver.quit()

1.2 通過 path 定位單個網(wǎng)頁元素

1)網(wǎng)頁對象path獲取方法

2)代碼案例

import time
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

driver = webdriver.Chrome() # 打開 chrome 瀏覽器
driver.get("https://www.baidu.com/")

input = driver.find_element("xpath","/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input")
# 指定搜索欄中的內(nèi)容
input.send_keys("大數(shù)據(jù)就業(yè)前景")
# 相當于回車鍵
input.send_keys(Keys.ENTER)
# 設置網(wǎng)頁停留時間
time.sleep(30)
driver.quit()

總結(jié)

到此這篇關(guān)于Python Selenium如何切換瀏覽器的頁面的文章就介紹到這了,更多相關(guān)Selenium切換瀏覽器頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中的import、from import及import as的區(qū)別解析

    python中的import、from import及import as的區(qū)別解析

    在Python中,如果import的語句比較長,導致后續(xù)引用不方便,可以使用as語法,這篇文章主要介紹了python中的import、from import以及import as的區(qū)別,需要的朋友可以參考下
    2022-10-10
  • python進階collections標準庫使用示例詳解

    python進階collections標準庫使用示例詳解

    這篇文章主要為大家介紹了python進階collections標準庫使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • jupyter notebook運行命令顯示[*](解決辦法)

    jupyter notebook運行命令顯示[*](解決辦法)

    這篇文章主要介紹了jupyter notebook運行命令顯示[*],文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • python實現(xiàn)批量注冊網(wǎng)站用戶的示例

    python實現(xiàn)批量注冊網(wǎng)站用戶的示例

    今天小編就為大家分享一篇python實現(xiàn)批量注冊網(wǎng)站用戶的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python獲取Windows桌面路徑的三種方法

    Python獲取Windows桌面路徑的三種方法

    在日常編程工作中,有時我們需要將文件或數(shù)據(jù)自動保存到用戶的桌面上以便于快速訪問,在 Windows 操作系統(tǒng)中,可以通過多種方式來獲取桌面路徑,本文將詳細介紹三種常用的方法,需要的朋友可以參考下
    2024-12-12
  • python如何實現(xiàn)Dice系數(shù)

    python如何實現(xiàn)Dice系數(shù)

    這篇文章主要介紹了python如何實現(xiàn)Dice系數(shù),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • python BitMap算法處理20億隨機整數(shù)去重

    python BitMap算法處理20億隨機整數(shù)去重

    這篇文章主要為大家介紹了python BitMap算法處理20億隨機整數(shù)去重,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • django框架模型層功能、組成與用法分析

    django框架模型層功能、組成與用法分析

    這篇文章主要介紹了django框架模型層功能、組成與用法,結(jié)合實例形式簡單分析了Django框架中模型層的基本概念、原理、常用組件構(gòu)成與相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Python根據(jù)字典的值查詢出對應的鍵的方法

    Python根據(jù)字典的值查詢出對應的鍵的方法

    這篇文章主要介紹了Python根據(jù)字典的值查詢出對應的鍵的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • python爬蟲 貓眼電影和電影天堂數(shù)據(jù)csv和mysql存儲過程解析

    python爬蟲 貓眼電影和電影天堂數(shù)據(jù)csv和mysql存儲過程解析

    這篇文章主要介紹了python爬蟲 貓眼電影和電影天堂數(shù)據(jù)csv和mysql存儲過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論