本文是為了優化前文selenium&playwright指定瀏覽器操作,編寫了一個bat單獨運行。(基于windows)
這樣使用這個工具的人員可以直接在自己電腦上雙擊bat后再雙擊exe就可以直接運行程序,無需配置任何環境。
接著前文解決一下報錯
報錯playwright._impl._api_types.Error
在后續集成好的代碼運行過程中會出現如下報錯
代碼語言:JavaScript代碼運行次數:0運行復制
playwright._impl._api_types.Error: It looks like you are using Playwright Sync API inside the asyncio loop.Please use the Async API instead.
這里是因為我循環一次請求會重新實例化一個playwright,但上一次實例化的playwright并沒有關閉,所以需要在代碼里面加上
代碼語言:javascript代碼運行次數:0運行復制
def pw_stop(self): time.sleep(5) self.playwright.stop()
此操作在get_headers之后進行。
(雖然他建議的是我要使用異步模式,但我是指定瀏覽器打開,異步模式里面沒有我需要的API)
使用bat腳本創建文件夾
可以使用以下的 BAT 腳本創建文件夾到 C 盤并檢查它是否已存在:
代碼語言:javascript代碼運行次數:0運行復制
@echo offset folder=C:MyFolderif not exist %folder% ( echo Creating folder... mkdir %folder% echo Folder created successfully!) else ( echo Folder already exists!)pause
腳本中,首先定義了要創建的文件夾路徑為 C:MyFolder,然后使用 if not exist 判斷該文件夾是否已存在。如果不存在,則輸出信息“Creating folder…”,并使用 mkdir 命令創建文件夾。創建成功后,輸出信息“Folder created successfully!”。如果文件夾已存在,則輸出信息“Folder already exists!”,不執行創建操作。
可以將上述代碼保存為 XXX.bat 文件,在命令行中執行即可。
寫一個bat腳本,獲取chrome.exe所在的路徑
可以使用以下的 BAT 腳本獲取 Chrome.exe 所在的路徑:
代碼語言:javascript代碼運行次數:0運行復制
@echo offsetlocalrem 獲取 Chrome.exe 所在的路徑set "chromePath="for /f "tokens=* usebackq" %%a in (`where chrome.exe`) do ( set "chromePath=%%a" goto :done):doneecho Chrome.exe is located at:echo %chromePath%pauseendlocal
腳本中,首先使用 where 命令查找 Chrome.exe 所在的路徑,并通過 for 循環獲取該路徑并賦值給變量 chromePath,然后使用 goto 語句跳出循環。最后,使用 echo 命令輸出 Chrome.exe 所在的路徑。
可以將上述代碼保存為 XXX.bat 文件,在命令行中執行即可。
解決bat的echo中文亂碼
在BAT腳本中,如果您使用中文字符作為echo命令中的參數,則可能會出現亂碼的情況。解決這個問題的方法是在使用echo命令輸出中文字符之前,將輸出的代碼頁設置為UTF-8編碼或其他支持中文字符的代碼頁。可以使用chcp命令來修改當前的代碼頁。
以下是設置代碼頁為UTF-8并輸出中文字符的示例代碼:
代碼語言:javascript代碼運行次數:0運行復制
@echo offchcp 65001 > nulecho 你好世界!
在上面的代碼中,chcp 65001命令用于設置代碼頁為UTF-8編碼,>nul用于將chcp命令的輸出重定向到空設備,以避免在腳本中顯示不必要的輸出。然后,使用echo命令輸出中文字符“你好世界!”,這時候就不會出現亂碼了。
如果您使用的操作系統不支持UTF-8編碼,可以使用其他支持中文字符的代碼頁,例如:936(中文簡體)或950(中文繁體)。在這種情況下,您可以將chcp命令的參數值更改為對應的代碼頁編號即可。
完整的bat腳本代碼語言:javascript代碼運行次數:0運行復制
@echo offchcp 65001 > nulecho ************************echo *****Start Runing*******echo ************************set folder=C:MyAutoFolderAutomationProfileif not exist %folder% ( echo Creating folder... mkdir %folder% echo Folder created successfully!) else ( echo Folder already exists!)rem 獲取 Chrome.exe 所在的路徑set "chromePath="for /f "tokens=* usebackq" %%a in (`where chrome.exe`) do ( set "chromePath=%%a")echo chromepath is : %chromePath%rem 啟動127.0.0.1:9222端口的谷歌瀏覽器echo Start ChromeBrowser at 127.0.0.1:9222 echo 瀏覽器啟動完畢,輸入回車鍵關閉當前窗口%chromePath% --remote-debugging-port=9222 --user-data-dir=%folder%pause
將上面的代碼保存為XXX.bat,雙擊即可運行,會打開一個新的chrome瀏覽器。
你可以在這個瀏覽器進行登錄操作,并保存賬戶信息。
之后通過selenium或playwright連接該瀏覽器,就不需要登錄操作,可直接進行后續自動化操作。