国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Selenium 自動化高級操作與解決疑難雜癥,如無法連接、使用代理等

這篇具有很好參考價值的文章主要介紹了Selenium 自動化高級操作與解決疑難雜癥,如無法連接、使用代理等。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Selenium 自動化高級操作與解決疑難雜癥,如無法連接、使用代理等,????妙用Selenium,selenium,自動化,測試工具

解決 Selenium 自動化中的常見疑難雜癥

這里記錄一些關(guān)于 Selenium的常用操作和疑難雜癥。

有一些細(xì)節(jié)的知識點就不重復(fù)介紹了,因為之前的文章中都有!

如果對本文中的知識點有疑問的,可以先閱讀我以前分享的文章!

知識點????

模塊 鏈接 作用
selenium https://www.selenium.dev/zh-cn/documentation/ 支持 web 瀏覽器自動化的一系列工具和庫的綜合項目

如果有看不懂的地方,可以結(jié)合我以前的文章一起看。

  • 【Selenium】控制當(dāng)前已經(jīng)打開的 chrome瀏覽器窗口

  • 【Selenium】控制當(dāng)前已經(jīng)打開的 chrome瀏覽器窗口(高級版)

  • Python模塊psutil:系統(tǒng)進(jìn)程管理與Selenium效率提升的完美結(jié)合

  • Selenium性能優(yōu)化:一文帶你快速上手!

TodoList:

  • 使用crx擴展插件進(jìn)行代理修改(后續(xù)更新

初始化webdriver

  • ChromeService 是一個Service類,負(fù)責(zé)啟動和停止 chromedriver。這個進(jìn)程是運行自動化腳本的基礎(chǔ)。

  • webdriver-manager 可以自動下載和管理 WebDriver 二進(jìn)制文件,用于自動管理 webdriver驅(qū)動

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager


def init_driver(options=None) -> webdriver.Chrome:
    """
    初始化瀏覽器驅(qū)動.

    Args:
        options(Options): chrome配置選項

    Returns:
        driver(WebDriver): 瀏覽器驅(qū)動對象

    """
    return webdriver.Chrome(
        service=ChromeService(ChromeDriverManager().install()),
        options=options
    )

使用代理

  • 使用crx擴展插件進(jìn)行代理修改(后續(xù)更新
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


if __name__ == '__main__':
    options = Options()
    proxy = "http://127.0.0.1:9527"
    options.add_argument(f'--proxy-server={proxy}')
    driver = init_driver(options=options)
    driver.get('https://www.bilibili.com/')

運行結(jié)果如下:

  • 可以請下的看到,所有請求的Remote Address 都是 127.0.0.1:7890

Selenium 自動化高級操作與解決疑難雜癥,如無法連接、使用代理等,????妙用Selenium,selenium,自動化,測試工具

指定 Chrome 瀏覽器端口

啟動瀏覽器

代碼貼心的給出多項selenium 優(yōu)化選項,根據(jù)需要來選擇~

import subprocess


def start_chrome(browser_path, commands_list=None) -> None:
    """
    啟動瀏覽器。

    Args:
        browser_path(str): 瀏覽器安裝的路徑
        commands_list(List[str]): 啟動瀏覽器的命令行參數(shù),默認(rèn)為None

    Returns:
        None
    """
    commands = [browser_path]
    commands.extend(commands_list)
    # 啟動瀏覽器
    subprocess.Popen(commands)


if __name__ == '__main__':
    # 設(shè)置瀏覽器的路徑和啟動參數(shù)
    path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
    port = 9527
    cmd_map = {
        '指定瀏覽器配置': r'--user-data-dir=F:\selenium',
        '指定遠(yuǎn)程調(diào)試端口': '--remote-debugging-port={}'.format(port),
        # '無頭模式': '--headless',
        # '無沙盒模式': '--no-sandbox',
        # '指定頁面加載策略': '--no-sandbox',
        # '禁用彈出攔': '--disable-popup-blocking',
        # '禁用圖片加載': '--blink-settings=imagesEnabled=false',
        # '禁用GPU硬件加速': '--disable-gpu',
        # '禁用js': True,
    }
    start_chrome(path, list(cmd_map.values()))

連接瀏覽器

注意!這里Selenium WebDriver 將附加到一個已經(jīng)運行的 Chrome 實例上,而不是啟動一個新的瀏覽器實例。這意味著 WebDriver 將使用現(xiàn)有瀏覽器實例的設(shè)置,包括網(wǎng)絡(luò)和代理配置。即無法使用上處的方法進(jìn)行指定代理。

具體步驟如下:

  1. 導(dǎo)入 Selenium 相關(guān)模塊。
  2. 創(chuàng)建 Chrome 瀏覽器的選項(Options)對象,并將調(diào)試端口設(shè)置為 “127.0.0.1:9527”,這意味著瀏覽器將連接到 Chrome 瀏覽器的開發(fā)者工具(DevTools)端口,以便進(jìn)行遠(yuǎn)程調(diào)試。
  3. 初始化 Chrome WebDriver,將上述選項傳遞給 WebDriver。
  4. 打開 Chrome 瀏覽器,并連接到指定的調(diào)試端口。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


if __name__ == '__main__':
    options = Options()
    options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
    driver = webdriver.Chrome(options=options)

    url = 'https://www.bilibili.com'
    driver.get(url)
    print(driver.title)	# 嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili

無法連接指定端口 Chrome瀏覽器

在命令行中啟動 Chrome 瀏覽器時候,不要使用 --headless ?。?!會導(dǎo)致Selenium 無法連接。

問題復(fù)現(xiàn)

一般的,我們使用以下命令去指定chrome瀏覽器端口,--headless 可能是有意或無意添加的

[
	"--remote-debugging-port=9527",
	"--headless"
]

# 或者 命令行
chrome.exe --remote-debugging-port=9527 --user-data-dir="F:\selenium\AutomationProfile" --headless

這個時候,會發(fā)現(xiàn),沒有打開任何窗口。因為是無頭模式!??!

在命令行執(zhí)行 netstat -ano | findstr :9527,如下圖所示:
Selenium 自動化高級操作與解決疑難雜癥,如無法連接、使用代理等,????妙用Selenium,selenium,自動化,測試工具

現(xiàn)在你去訪問:http://127.0.0.1:9527/json/version,可以看到下圖所示:

  • 這表明遠(yuǎn)程調(diào)試接口是開啟的

Selenium 自動化高級操作與解決疑難雜癥,如無法連接、使用代理等,????妙用Selenium,selenium,自動化,測試工具


但如果我們使用以下代碼去連接端口為 9527 的瀏覽器,則會報錯?。?!

options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
driver = webdriver.Chrome(options=options)

如果沒有意外!則會拋出以下異常:

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot connect to chrome at 127.0.0.1:9527
from unknown error: unable to discover open pages

這個問題其實是不應(yīng)該發(fā)生的?。?!

因為 無頭模式 可能改變了與調(diào)試接口的交互方式或者其他相關(guān)配置,從而影響到了 Selenium 的連接。


如何解決

殺死全部的9527端口的進(jìn)程,并注意在命令行中啟動 Chrome 瀏覽器時候,不要使用 --headless

這個命令的目的是終止在指定端口上運行的進(jìn)程,以便釋放端口并停止與之相關(guān)的應(yīng)用程序。請注意,使用 taskkill 命令會強制終止進(jìn)程,因此要小心使用,以免意外終止重要的進(jìn)程。

這個時候,我們需要在命令行執(zhí)行以下命令,作用是終止在端口 9527 上運行的進(jìn)程。(詳細(xì)解釋看下面)

  1. netstat -ano | findstr :9527:這部分命令用于查找在端口 9527 上運行的進(jìn)程的 PID。netstat 列出了所有網(wǎng)絡(luò)連接,而 findstr :9527 過濾出包含端口 9527 的行,顯示它們的 PID。

  2. for /f "tokens=5" %a in (...) do ...for 命令用于處理上述命令的輸出。它將提取 netstat 輸出中的 PID,并將其存儲在 %a 變量中。

  3. taskkill /F /PID %a:一旦 PID 被提取并存儲在 %a 中,taskkill 命令將使用這個 PID 終止相關(guān)進(jìn)程。

for /f "tokens=5" %a in ('netstat -ano ^| findstr :9527') do taskkill /F /PID %a

kill PID

for /f "tokens=5" %a in ('netstat -ano ^| findstr :9527') do taskkill /F /PID %a

這段命令是一個用于在 Windows 命令提示符中終止在特定端口(9527)上運行的進(jìn)程的復(fù)合命令。下面是這個命令的解釋:

  1. for /f "tokens=5" %a in ('netstat -ano ^| findstr :9527') do ...:這部分命令使用 for 循環(huán)來處理輸出結(jié)果。它的作用是執(zhí)行以下操作:

    • for /f:這表示使用 for 命令來進(jìn)行循環(huán)迭代。
    • "tokens=5":這指定了循環(huán)要提取的令牌(token),在這里我們提取第五個令牌。在這個上下文中,第五個令牌是 netstat 輸出中的進(jìn)程標(biāo)識符(PID)。
    • %a:這是一個變量,用于存儲從 netstat 命令輸出中提取的 PID。
  2. ('netstat -ano ^| findstr :9527'):這部分是在 for 命令內(nèi)部的命令,它會產(chǎn)生一系列數(shù)字,這些數(shù)字代表在端口 9527 上運行的進(jìn)程的 PID。它的工作步驟如下:

    • netstat -ano:這部分執(zhí)行 netstat 命令,用于列出所有活動網(wǎng)絡(luò)連接及其相關(guān)信息。-ano 標(biāo)志告訴 netstat 顯示所有連接的詳細(xì)信息,并顯示每個連接的 PID。
    • ^|:這是一個管道符號 |,用于將 netstat 的輸出傳遞給下一個命令,即 findstr。
    • findstr :9527:這部分命令用于過濾 netstat 輸出,只保留包含端口號 9527 的行,這些行包括了我們關(guān)心的進(jìn)程信息。
  3. taskkill /F /PID %a:一旦 for 循環(huán)提取了 netstat 輸出中的 PID(存儲在 %a 中),這部分命令使用 taskkill 命令來終止這些進(jìn)程。具體地:

    • taskkill:這是用于終止進(jìn)程的命令。
    • /F:這是 taskkill 的標(biāo)志,表示要強制終止進(jìn)程,即無需用戶確認(rèn)。
    • /PID %a:這是指定要終止的進(jìn)程的 PID,其中 %a 包含了在 for 循環(huán)中提取的 PID。

因此,整個命令的作用是找到所有在端口 9527 上運行的進(jìn)程的 PID,然后使用 taskkill 命令將它們終止掉。這可以幫助我們清除特定端口上的活動進(jìn)程。需要注意使用此命令,以免終止不必要的進(jìn)程。

未完待續(xù)

將持續(xù)更新,常見的Selenium的操作 和 疑難雜癥等!文章來源地址http://www.zghlxwxcb.cn/news/detail-767090.html

到了這里,關(guān)于Selenium 自動化高級操作與解決疑難雜癥,如無法連接、使用代理等的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 軟件測試/測試開發(fā)丨Selenium Web自動化測試 高級控件交互方法

    本文為霍格沃茲測試開發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享 原文鏈接:https://ceshiren.com/t/topic/27045 使用場景 對應(yīng)事件 復(fù)制粘貼 鍵盤事件 拖動元素到某個位置 鼠標(biāo)事件 鼠標(biāo)懸停 鼠標(biāo)事件 滾動到某個元素 滾動事件 使用觸控筆點擊 觸控筆事件(了解即可) https://www.selenium.dev/documentati

    2024年02月09日
    瀏覽(62)
  • Selenium 自動化操作

    Selenium 自動化操作

    嘿,小伙伴們周末有沒有像? 大豬 ?一樣在加班的,今天分享一個超有意思的東西?Selenium?自動化測試/調(diào)式工具。 Selenium 就像真實用戶所做的一樣,Selenium 測試可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Chrome和 Firefox 中運行。其他測試工具都不能覆蓋那么多的平臺。

    2024年02月19日
    瀏覽(21)
  • Web 自動化神器 TestCafe—頁面高級操作篇

    在【W(wǎng)eb 自動化神器 TestCafe — 頁面基本操作篇】這篇文章中我們介紹了TestCafe頁面交互的一些基本使用 Web 自動化神器 TestCafe — 頁面基本操作篇 這篇文章接著上一篇來給大家介紹一下 TestCafe 頁面交互的一些高級操作。 一、鼠標(biāo)拖拽 ? 鼠標(biāo)拖拽鼠標(biāo)拖拽 1、拖拽元素偏移 方法

    2024年02月11日
    瀏覽(16)
  • 【Selenium自動化測試】操作Cookie

    所謂\\\"cookie\\\"數(shù)據(jù)是指某些網(wǎng)站為了辨別用戶身份,儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密),由用戶客戶端計算機暫時或永久保存的信息。通俗來講就是指緩存數(shù)據(jù),包括用戶名、密碼、注冊賬戶、手機號等公民個人信息。 在Web自動化測試時,我們也經(jīng)常需要對其進(jìn)行

    2024年02月03日
    瀏覽(21)
  • selenium自動化測試-鼠標(biāo)鍵盤操作

    selenium自動化測試-鼠標(biāo)鍵盤操作

    前面我們已經(jīng)學(xué)完了8種定位方式和利用Firefox插件協(xié)助定位,學(xué)會了定位了,自動化就成功了一半。 但是我們好像只是定位,定位后的操作并不多,我們今天要系統(tǒng)的了解下鼠標(biāo)鍵盤操作。 回顧下我們之前的簡單操作: 1.click()?點擊按鈕 2.clear() 清除輸入框 3.send_keys() 輸入字

    2024年02月07日
    瀏覽(20)
  • 如何使用 Selenium 實現(xiàn)自動化操作?

    如何使用 Selenium 實現(xiàn)自動化操作?

    本篇咱們來談?wù)凷elenium自動化腳本是如何工作的,以及如何實現(xiàn)一個簡單的自動化示例; 一、關(guān)于Selenium 1.1、為什么選擇它作為web自動化的測試工具? 選擇Selenium作為web自動化測試工具的原因(面試也許會問): 1. 開源免費; 2. 支持多瀏覽器,如Chrome、 Firefox、IE瀏覽器等;

    2024年02月02日
    瀏覽(30)
  • 多測師肖sir_高級金牌講師___ui自動化之selenium001

    多測師肖sir_高級金牌講師___ui自動化之selenium001

    一、認(rèn)識selenium (1)selenium是什么? a、selenium是python中的一個第三方庫 b、Selenium是一個應(yīng)用于web應(yīng)用程序的測試工具,支持多平臺,多瀏覽器,多語言去實現(xiàn)ui自動化測試,我們現(xiàn)在講的Selenium版本其實是Selenium2版本 c、Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作

    2024年02月08日
    瀏覽(20)
  • selenium自動化的輸入和回車操作

    # 導(dǎo)入模塊 from selenium.webdriver import Chrome # 導(dǎo)入鍵盤 from selenium.webdriver.common.keys import Keys # 導(dǎo)入時間模塊 import time # 創(chuàng)建一個瀏覽器 web = Chrome() # 打開一個網(wǎng)址 web.get(\\\"http://xxxxxxxxx.com\\\") # 找到某個元素. 點擊它 el = web.find_element_by_xpath(\\\'//*[@id=\\\"changeCityBox\\\"]/ul/li[1]/a\\\') el.click() ?# 點擊

    2024年02月03日
    瀏覽(28)
  • 分享幾個 Selenium 自動化常用操作

    最近工作會用到 selenium 來自動化操作一些重復(fù)的工作,那么在用selenium寫代碼的過程中,又順手整理了一些常用的操作,分享給大家。 常用元素定位方法 雖然有關(guān)selenium定位元素的方法有很多種,但是對于沒有深入學(xué)習(xí),尤其是沒有前端知識的朋友來說,常用的就那幾招。

    2024年04月10日
    瀏覽(23)
  • Web自動化之Selenium-鼠標(biāo)操作

    Web自動化之Selenium-鼠標(biāo)操作

    本文總結(jié)了Selenium常用的鼠標(biāo)操作。? 打開百度網(wǎng)站,點擊首頁的新聞。 WebDriver封裝了一套鼠標(biāo)操作的包, ●引入包:from selenium.webdriver.common.action_chains import ActionChains。 ●定位元素,存儲到某個變量:ele = driver.find_element_by_×××(\\\'××\\\')。 ●固定寫法:ActionChains(driver).click(e

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包