如何保持Selenium Webdriver chrome浏览器在运行程序时打开?

hmae6n7t  于 2023-01-26  发布在  其他
关注(0)|答案(4)|浏览(240)

我正在使用 selenium 从一个体育网站提取数据。我希望Chrome浏览器在我关闭之前一直保持打开状态。但我的程序在3-4秒后关闭了Chrome窗口。如果能帮助我找到解决方案,我将不胜感激。

这是我的密码

from selenium import webdriver
from selenium.webdriver.common.keys import  Keys
import pandas as pd

print('\nWelcome to Arsenal FC players payroll page\n')
page_num = input('Enter the year for payroll data (2011-2020): ')

df = pd.DataFrame(columns = ['Player', 'Salary', 'Year']) #creates a master dataframe

driver = webdriver.Chrome('/Users/mahtabkhan/Documents/chromedriver')

if(page_num != 2020):
    url = 'https://www.spotrac.com/epl/arsenal-fc/payroll/' + page_num + '/'
else:
    url = 'https://www.spotrac.com/epl/arsenal-fc/payroll/' 

driver.get(url)

players = driver.find_elements_by_xpath('//td[@class="player"]')
salaries = driver.find_elements_by_xpath('//td[@class="cap info"]')

#to get the text of each player into a list
players_list = []
for p in range(len(players)):
    players_list.append(players[p].text)

#to get the salaries into a list
salaries_list = []
for s in range(len(salaries)):
    salaries_list.append(salaries[s].text)  

data_tuples = list(zip(players_list[1:],salaries_list[1:])) # list of each players name and salary paired together
temp_df = pd.DataFrame(data_tuples, columns=['Player','Salary']) # creates dataframe of each tuple in list
temp_df['Year'] = page_num   # adds season beginning year to each dataframe
df = df.append(temp_df)  #appends to master dataframe

driver.close()
wrrgggsh

wrrgggsh1#

在您的WebDriver中(当您示例化它时),您可以将以下内容添加到Chrome选项中

chrome_options.add_experimental_option("detach", True)

完成后,通过命令终端(Windows中的命令提示符)运行它,它不会关闭

主程序-供参考

from selenium import webdriver

def get_chrome_driver():
    """This sets up our Chrome Driver and returns it as an object"""
    path_to_chrome = "F:\Selenium_Drivers\Windows_Chrome85_Driver\chromedriver.exe"
    chrome_options = webdriver.ChromeOptions() 
    
    # Keeps the browser open
    chrome_options.add_experimental_option("detach", True)
    
    # Browser is displayed in a custom window size
    chrome_options.add_argument("window-size=1500,1000")
    
    # Removes the "This is being controlled by automation" alert / notification
    chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
    
    return webdriver.Chrome(executable_path = path_to_chrome,
                            options = chrome_options)


# Gets our chrome driver and opens our site
chrome_driver = get_chrome_driver()
chrome_driver.get("https://www.google.com/")
print('The browser should not close after you see this message')
chrome_driver.service.stop()
tgabmvqs

tgabmvqs2#

selenium 4 / PHP / Docker
$this->driver = RemoteWebDriver::createBySessionID(self::$session_id, self::$server, 60000, 60000);

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
zte4gxcn

zte4gxcn3#

driver.close()将关闭你的浏览器.只要删除它如果你想你的浏览器仍然打开

b4wnujal

b4wnujal4#

它会关闭,因为你在末尾添加了driver.close()。只要删除该行,浏览器就会永远保持打开状态。如果你想在一段时间后关闭它,那么你可以在driver.close()之前添加time.sleep,如下所示:

import time

# Your code

time.sleep(60) #Stays open for 60 seconds (which is 1 min)

driver.close()

相关问题