selenium複用瀏覽器進行調試操作如何去做


在這裏插入圖片描述

前置準備

我們的需求是要調試瀏覽器的某個頁面進行某些操作,但是我們要求是操作當前已經打開的某個頁面,在當前頁面直接執行程序運行 selenium 腳本,這個時候可以用到複用瀏覽器的方法

以 chrome 瀏覽器爲例,我們需要:

  • chrome 瀏覽器(最好配置進環境變量,其 exe 文件在桌面谷歌右鍵屬性中打開文件位置中可以找到)
  • 下載好與自己谷歌瀏覽器版本對應的谷歌驅動(這個 chromedriver 配不配置環境變量隨意)
  • 有基本框架的代碼

步驟一:執行谷歌調試命令

在執行之前我們需要把所有的 chrome 都關閉,然後 cmd 執行如下:

# 谷歌以調試模式啓動
chrome --remote-debugging-port=9222

如果谷歌可執行文件設置了環境變量,這裏就可以直接執行了,否則要進入相關文件中再執行,同時要確保 9222 端口沒有被佔用

步驟二:手動點擊頁面

我們手動點擊剛纔以調試模式打開的谷歌瀏覽器,然後我們手動進入我們想進入的頁面,不關閉它

步驟三:添加調試代碼並運行

打開我們的 IDEA

在驅動啓動的地方,需要添加這樣的代碼表示驅動設置爲調試的屬性,並且通過 9222 端口傳輸信息

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress", 127.0.0.1:9222);
WebDriver driver = new ChromeDriver(options);

然後我們運行測試,會發現,驅動執行並且是從當前谷歌瀏覽器頁面直接操作,他沒有重新打開一個瀏覽器

可能遇到的問題

1.首先要說明的是注意我們通過命令打開調試的谷歌瀏覽器,其他的谷歌瀏覽器是要關閉的,但是火狐或者 IE 等管不管閉不影響

2.我們還要注意端口不要被佔用了!可以通過如下命令檢查端口占用情況,若有佔用,我們拿到最右邊的 pid 號在任務管理器中去手動關閉進程就行了,我們只用關注第二列的端口表示本地不是外部

netstat -aon | findstr "9222"

3.如果遇到selenium.common.exceptions.WebDriverException: Message: unknown error: cannot connect to chrome at 127.0.0.1:9222這個錯誤基本就是你的谷歌瀏覽器又升級了,你要下載新的驅動了

適用的場景

有一些頁面執行代碼很難跑到那個頁面,我們就可以通過谷歌調試,先手動到那個頁面,再用代碼操作當前頁面即可

實際上來講我覺得用處不大,一般我們跑代碼到那個頁面,打個斷點或者加個延時就行,這個複用操作個人感覺還弄麻煩了,不過對於一些無法用代碼跑到的頁面,想要獲取其中的東西,用這個複用的方法倒是有用的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章