最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

我們?cè)谂谰W(wǎng)使用Selenium進(jìn)行測(cè)試的時(shí)候,有時(shí)候想要點(diǎn)擊瀏覽器里面的網(wǎng)址,跳到另一個(gè)頁面上,獲取第二個(gè)頁面的內(nèi)容。


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

1. 獲取所有標(biāo)簽頁句柄,并切換到特定標(biāo)簽頁:

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

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實(shí)例,指定WebDriver的路徑
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

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

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

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

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

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

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

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

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

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

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

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

可以使用JavaScript來打開一個(gè)新標(biāo)簽頁,并自動(dòng)切換到新的空白標(biāo)簽頁。

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

然后獲取新的標(biāo)簽頁句柄并切換:

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

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

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

3.示例代碼

點(diǎn)擊網(wǎng)頁元素,實(shí)現(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實(shí)例,指定WebDriver的路徑
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

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

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

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

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

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

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

# 關(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實(shí)例,指定WebDriver的路徑
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

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

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

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

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

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

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

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

附:定位單個(gè)網(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 定位單個(gè)網(wǎng)頁元素

1)網(wǎng)頁對(duì)象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è)前景")
# 相當(dāng)于回車鍵
input.send_keys(Keys.ENTER)
# 設(shè)置網(wǎng)頁停留時(shí)間
time.sleep(30)
driver.quit()

總結(jié)

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

相關(guān)文章

  • Python將二維列表list的數(shù)據(jù)輸出(TXT,Excel)

    Python將二維列表list的數(shù)據(jù)輸出(TXT,Excel)

    這篇文章主要介紹了Python將二維列表list的數(shù)據(jù)輸出(TXT,Excel),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python寫一個(gè)簡(jiǎn)單的api接口的實(shí)現(xiàn)

    Python寫一個(gè)簡(jiǎn)單的api接口的實(shí)現(xiàn)

    本文主要介紹了Python寫一個(gè)簡(jiǎn)單的api接口的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python鏈接sqlite數(shù)據(jù)庫的詳細(xì)代碼實(shí)例

    python鏈接sqlite數(shù)據(jù)庫的詳細(xì)代碼實(shí)例

    SQLite數(shù)據(jù)庫是一款非常小巧的嵌入式開源數(shù)據(jù)庫軟件,也就是說沒有獨(dú)立的維護(hù)進(jìn)程,所有的維護(hù)都來自于程序本身,它是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低
    2021-09-09
  • Django框架會(huì)話技術(shù)實(shí)例分析【Cookie與Session】

    Django框架會(huì)話技術(shù)實(shí)例分析【Cookie與Session】

    這篇文章主要介紹了Django框架會(huì)話技術(shù),結(jié)合實(shí)例形式分析了Django框架Cookie與Session相關(guān)使用技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • 關(guān)于Python中request發(fā)送post請(qǐng)求傳遞json參數(shù)的問題

    關(guān)于Python中request發(fā)送post請(qǐng)求傳遞json參數(shù)的問題

    這篇文章主要介紹了Python中request發(fā)送post請(qǐng)求傳遞json參數(shù)的問題,在Python中需要傳遞dict參數(shù),利用json.dumps將dict轉(zhuǎn)為json格式用post方法發(fā)起請(qǐng)求,感興趣的朋友跟隨小編一起看看吧
    2022-08-08
  • Python處理缺失數(shù)據(jù)的多種方式

    Python處理缺失數(shù)據(jù)的多種方式

    在數(shù)據(jù)分析和數(shù)據(jù)處理的過程中,缺失數(shù)據(jù)(Missing Data)是一個(gè)常見的問題,缺失數(shù)據(jù)的存在可能會(huì)影響模型的準(zhǔn)確性和預(yù)測(cè)的可靠性,因此正確處理缺失數(shù)據(jù)是數(shù)據(jù)分析的重要步驟,所以本文給大家介紹了Python處理缺失數(shù)據(jù)的多種方式,需要的朋友可以參考下
    2024-08-08
  • Python實(shí)現(xiàn)多條件篩選目標(biāo)數(shù)據(jù)功能【測(cè)試可用】

    Python實(shí)現(xiàn)多條件篩選目標(biāo)數(shù)據(jù)功能【測(cè)試可用】

    這篇文章主要介紹了Python實(shí)現(xiàn)多條件篩選目標(biāo)數(shù)據(jù)功能,結(jié)合實(shí)例形式總結(jié)分析了Python3使用內(nèi)建函數(shù)filter、pandas包以及for循環(huán)三種方法對(duì)比分析了列表進(jìn)行條件篩選操作相關(guān)實(shí)現(xiàn)技巧與運(yùn)行效率,需要的朋友可以參考下
    2018-06-06
  • 使用Python實(shí)現(xiàn)圖像顏色量化的方法

    使用Python實(shí)現(xiàn)圖像顏色量化的方法

    這篇文章主要介紹了使用Python進(jìn)行圖像顏色量化,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Pandas數(shù)據(jù)填充的具體實(shí)現(xiàn)

    Pandas數(shù)據(jù)填充的具體實(shí)現(xiàn)

    在數(shù)據(jù)分析與預(yù)處理過程中,臟數(shù)據(jù)幾乎不可避免,本文主要介紹了Pandas數(shù)據(jù)填充的具體實(shí)現(xiàn),也稱為缺失值處理,使數(shù)據(jù)清洗工作更加高效,感興趣的可以了解一下
    2024-07-07
  • pandas.DataFrame.iloc的具體使用詳解

    pandas.DataFrame.iloc的具體使用詳解

    本文主要介紹了pandas.DataFrame.iloc的具體使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論

集贤县| 志丹县| 泰来县| 皮山县| 长阳| 类乌齐县| 扬中市| 星座| 东源县| 临海市| 佛冈县| 威信县| 玉山县| 蕉岭县| 柏乡县| 阿鲁科尔沁旗| 鄂尔多斯市| 韩城市| 晋城| 松桃| 宕昌县| 克东县| 洛浦县| 呈贡县| 宁远县| 云霄县| 武乡县| 错那县| 襄城县| 富川| 奉节县| 始兴县| 福鼎市| 塘沽区| 濮阳市| 大兴区| 禹城市| 华池县| 广饶县| 岳普湖县| 缙云县|