[英]Python selenium keep browser open
出於營銷原因,我正在使用 selenium 打開一些瀏覽器 windows。 我只需打開我的營銷資源,通過 selenium 登錄並開始工作。
問題是,代碼執行后 selenium 關閉了 window。
到目前為止,所有解決方案都沒有太大幫助。
我有 13 個瀏覽器 windows atm.,它們看起來像這樣:
def open_instagram():
try:
# Connect
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
browser = webdriver.Chrome('drivers/chromedriver.exe', chrome_options=chrome_options)
browser.set_window_size(1800, 900)
browser.get("https://www.instagram.com/accounts/login/?hl=de")
browser.find_element(By.NAME, 'username').send_keys('MYEMAIL', Keys.TAB, 'MYPW', Keys.ENTER)
except Exception as e:
print (e, 'Instagram')
open_instagram()
我找到的最接近的解決方案是在我的腳本末尾添加它,但不知何故它只會保持 5 windows 打開,而不是關閉 5 windows 並打開下一個 5 個新的 windows:
while True:
pass
我只希望 selenium 保持所有瀏覽器 windows 打開,直到我手動關閉它們。
如果您希望 chrome 和 chromedriver 保持打開狀態,則必須在啟動 chromedriver 時使用“分離”選項。
在您的情況下添加:
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
或者,您可以在帶有斷點的調試模式下運行代碼,並在它暫停時“終止”程序並根據需要接管瀏覽器,但這僅適用於 IDE。
編輯 - 為清晰起見添加了導入
您還可以像這樣添加global browser
:
def open_instagram():
try:
# Connect
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
global browser # this will prevent the browser variable from being garbage collected
browser = webdriver.Chrome('drivers/chromedriver.exe', chrome_options=chrome_options)
browser.set_window_size(1800, 900)
browser.get("https://www.instagram.com/accounts/login/?hl=de")
browser.find_element(By.NAME, 'username').send_keys('MYEMAIL', Keys.TAB, 'MYPW', Keys.ENTER)
except Exception as e:
print (e, 'Instagram')
open_instagram()
硒 4 \/ PHP \/ 碼頭工人
version: "3.5"
#Latest version
networks:
grid-network:
services:
selenium-hub:
image: selenium/hub:latest
container_name: selenium-hub
ports:
- "4446:4444"
networks:
- grid-network
chrome:
shm_size: 4gb
image: selenium/standalone-chrome:latest
container_name: chrome
depends_on:
- selenium-hub
environment:
- NODE_MAX_SESSION=5
- NODE_MAX_INSTANCES=5
- GRID_MAX_SESSION=31556926
- GRID_BROWSER_TIMEOUT=31556926
- GRID_TIMEOUT=31556926
- GRID_SESSION_TIMEOUT=31556926
- SESSION_TIMEOUT=31556926
- NODE_SESSION_TIMEOUT=31556926
- GRID_CLEAN_UP_CYCLE=31556926
- SE_NODE_SESSION_TIMEOUT=31556926
- SE_SESSION_REQUEST_TIMEOUT=31556926
volumes:
- /dev/shm:/dev/shm
ports:
- "33333:5900"
- "3333:7900"
- "44444:4444"
links:
- selenium-hub
networks:
- grid-network
執行此操作的最簡單方法是在獲取 function 之后添加input()
。這將提示您必須按 Enter 鍵才能繼續,從而使您的程序無法完成。 考慮到您似乎是手動瀏覽每個網頁,它可能會更有效? 或者,您可以使用 time 模塊中的time.sleep
function 來阻止它關閉,但這對於無限期保持打開狀態效率不高。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.