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

Python使用execute_script模擬鼠標(biāo)滾動(dòng)、鼠標(biāo)點(diǎn)擊等示例

 更新時(shí)間:2025年02月02日 16:05:51   作者:翠花上酸菜  
文章介紹了Python使用Selenium執(zhí)行JavaScript來(lái)繞過(guò)網(wǎng)站對(duì)爬蟲(chóng)的限制,包括模擬點(diǎn)擊、攔截彈出窗口、創(chuàng)建并派發(fā)點(diǎn)擊事件、模擬鼠標(biāo)懸停后點(diǎn)擊和滾動(dòng)到元素并點(diǎn)擊等方法

我們?cè)趯?xiě)selenium獲取網(wǎng)絡(luò)信息的時(shí)候,有時(shí)候我們會(huì)受到對(duì)方瀏覽器js的監(jiān)控,對(duì)方通過(guò)分析用戶行為模式,如點(diǎn)擊、滾動(dòng)、停留時(shí)間等,網(wǎng)站可以識(shí)別出異常行為,進(jìn)而對(duì)Selenium爬蟲(chóng)進(jìn)行限制。

這里我們可以加入JavaScript的使用。Selenium可以執(zhí)行JavaScript,通過(guò)使用 execute_script 方法,來(lái)執(zhí)行點(diǎn)擊操作。

它可以繞過(guò)一些 Selenium 直接操作元素時(shí)可能遇到的問(wèn)題,比如元素未完全加載、元素被遮擋或者需要更復(fù)雜的交互。

以下是幾種使用 execute_script 來(lái)執(zhí)行點(diǎn)擊操作的方法:

1. 模擬鼠標(biāo)直接點(diǎn)擊事件

element = driver.find_element_by_id("myButton")
driver.execute_script("arguments[0].click();", element)

這段代碼找到 ID 為 myButton 的元素,并使用 JavaScript 直接觸發(fā)該元素的點(diǎn)擊事件。

2. 攔截彈出窗口

通過(guò)覆蓋瀏覽器內(nèi)置的方法,如alert、confirm、prompt等,避免彈出窗口

driver.execute_script('''window.alert = function() {
    console.log("Alert function called, but blocked.");
};
window.confirm = function() {
    console.log("Confirm function called, but blocked.");
    return true; // 返回true,以模擬用戶點(diǎn)擊“確定”按鈕
};
window.prompt = function() {
    console.log("Prompt function called, but blocked.");
    return null; // 返回null,以模擬用戶點(diǎn)擊“取消”按鈕
};''')

以上的代碼,所有調(diào)用alert、confirm和prompt的方法將被攔截,且不會(huì)彈出任何窗口。這種方法簡(jiǎn)單而有效,適用于大多數(shù)情況。

3. 創(chuàng)建并派發(fā)點(diǎn)擊事件

這種方法創(chuàng)建一個(gè)新的點(diǎn)擊事件,并將其派發(fā)到指定的元素上,這可以提供更多的控制,比如模擬鼠標(biāo)右鍵點(diǎn)擊。

element = driver.find_element("myButton")
driver.execute_script("var event = new MouseEvent('click', {"
                     "view: window,"
                     "bubbles: true,"
                     "cancelable: true});"
                     "arguments[0].dispatchEvent(event);", element)

在運(yùn)行過(guò)程中,如果遇到下面的問(wèn)題:

“JavascriptException: javascript error: arguments[0].dispatchEvent is not a function”

這說(shuō)明,

4. 使用 JavaScript 模擬鼠標(biāo)懸停后點(diǎn)擊

如果你需要更復(fù)雜的鼠標(biāo)操作,比如鼠標(biāo)懸停后點(diǎn)擊,你可以使用以下方法:

element = driver.find_element_by_id("myButton")
driver.execute_script("arguments[0].style.cursor = 'pointer';", element)
driver.execute_script("arguments[0].onmouseover = function() {"
                     "arguments[0].style.backgroundColor = 'yellow'; };", element)
driver.execute_script("arguments[0].onmouseout = function() {"
                     "arguments[0].style.backgroundColor = 'white'; };", element)
driver.execute_script("arguments[0].click();", element)

5. 滾動(dòng)到元素并點(diǎn)擊

如果元素不在可視區(qū)域內(nèi),你可能需要先滾動(dòng)到該元素,然后再執(zhí)行點(diǎn)擊操作:

element = driver.find_element_by_id("myButton")
driver.execute_script("arguments[0].scrollIntoView();", element)
driver.execute_script("arguments[0].click();", element)

6. 等待元素可點(diǎn)擊后執(zhí)行點(diǎn)擊

有時(shí)候,元素可能需要一些時(shí)間來(lái)加載或變得可點(diǎn)擊,你可以使用 execute_script 來(lái)等待這個(gè)條件:

element = driver.find_element_by_id("myButton")
driver.execute_script("while (arguments[0].disabled || "
                     "arguments[0].style.display === 'none' || "
                     "arguments[0].style.visibility === 'hidden') {"
                     "setTimeout(function() {}, 100); };"
                     "arguments[0].click();", element)

這些方法提供了不同場(chǎng)景下使用 execute_script 執(zhí)行點(diǎn)擊操作的示例。

你可以根據(jù)實(shí)際情況選擇最適合你需求的方法。

到此這篇關(guān)于Python使用execute_script模擬鼠標(biāo)滾動(dòng)、鼠標(biāo)點(diǎn)擊等示例的文章就介紹到這了,更多相關(guān)Python使用js模擬鼠標(biāo)點(diǎn)擊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python3 requests庫(kù)實(shí)現(xiàn)多圖片爬取教程

    python3 requests庫(kù)實(shí)現(xiàn)多圖片爬取教程

    今天小編就為大家分享一篇python3 requests庫(kù)實(shí)現(xiàn)多圖片爬取教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • WSL2中安裝 cuDNN??的步驟詳解

    WSL2中安裝 cuDNN??的步驟詳解

    本文在WSL2環(huán)境下通過(guò)APT或手動(dòng)安裝cuDNN的步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-06-06
  • python代碼有一行標(biāo)黃問(wèn)題的解決方案

    python代碼有一行標(biāo)黃問(wèn)題的解決方案

    這篇文章主要介紹了python代碼有一行標(biāo)黃問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 一文詳解如何在Ubuntu?20.04或22.04上安裝Python?3

    一文詳解如何在Ubuntu?20.04或22.04上安裝Python?3

    Python是一種廣泛使用的高級(jí)編程語(yǔ)言,它在各種領(lǐng)域都有廣泛的應(yīng)用,如果你正在使用Ubuntu操作系統(tǒng),下面這篇文章主要介紹了如何在Ubuntu20.04或22.04上安裝Python3的相關(guān)資料,需要的朋友可以參考下
    2026-03-03
  • Python基于requests庫(kù)爬取網(wǎng)站信息

    Python基于requests庫(kù)爬取網(wǎng)站信息

    這篇文章主要介紹了python基于requests庫(kù)爬取網(wǎng)站信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 基于OpenCV與Python實(shí)現(xiàn)的身份證號(hào)碼識(shí)別案例詳解

    基于OpenCV與Python實(shí)現(xiàn)的身份證號(hào)碼識(shí)別案例詳解

    身份證識(shí)別技術(shù)主要依賴于計(jì)算機(jī)視覺(jué)和圖像處理技術(shù),通過(guò)對(duì)身份證圖像進(jìn)行分析,提取關(guān)鍵信息(如身份證號(hào)碼、姓名等),這篇文章主要介紹了基于OpenCV與Python實(shí)現(xiàn)的身份證號(hào)碼識(shí)別的相關(guān)資料,需要的朋友可以參考下
    2026-01-01
  • Python使用JDAudioCrawler將下載的音頻存儲(chǔ)到本地

    Python使用JDAudioCrawler將下載的音頻存儲(chǔ)到本地

    在當(dāng)今數(shù)字化時(shí)代,音頻數(shù)據(jù)的獲取和處理變得越來(lái)越重要,本文將訪問(wèn)網(wǎng)易云音樂(lè)為案例,介紹如何使用JDAudioCrawler這個(gè)強(qiáng)大的工具,將音頻數(shù)據(jù)存儲(chǔ)下載到本地存儲(chǔ)中,需要的可以了解下
    2023-10-10
  • Django框架 querySet功能解析

    Django框架 querySet功能解析

    這篇文章主要介紹了Django框架 querySet功能解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python使用tkinter加載png、jpg等圖片

    Python使用tkinter加載png、jpg等圖片

    這篇文章主要介紹了Python使用tkinter加載png、jpg等圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python學(xué)習(xí)之Django的管理界面代碼示例

    Python學(xué)習(xí)之Django的管理界面代碼示例

    這篇文章主要介紹了Python學(xué)習(xí)之Django的管理界面代碼示例,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

蓬安县| 富裕县| 新兴县| 黎平县| 大荔县| 锦州市| 安康市| 中方县| 蛟河市| 莎车县| 中方县| 水城县| 宾川县| 会宁县| 长垣县| 桓台县| 吴堡县| 织金县| 镇沅| 遂平县| 镇宁| 昌图县| 台前县| 辽宁省| 新野县| 铜梁县| 清徐县| 徐汇区| 黄浦区| 灵台县| 静海县| 宣武区| 定结县| 明光市| 五台县| 定兴县| 河南省| 亳州市| 金沙县| 隆德县| 宁陕县|