簡體   English   中英

Python selenium 保持瀏覽器打開

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM