I am using selenium to extract data from a sports website. I want my Chrome browser to remain open until I close it. But my program closes the Chrome window after 3-4 seconds. Any help on finding a solution would be much appreciated.
Here's my code:
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()
It closes because you have added driver.close()
at the end. Just remove that line and the browser would stay open forever. If you want to close it after some time, then you can add time.sleep
before driver.close()
like this:
import time
# Your code
time.sleep(60) #Stays open for 60 seconds (which is 1 min)
driver.close()
In your WebDriver ( when you're instantiating it ), you can add the following to your Chrome Options
chrome_options.add_experimental_option("detach", True)
Once you do that, run it via the command terminal ( Command Prompt in Windows ) and it should not close on you
MAIN PROGRAM - For Reference
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()
Selenium 4 \/ PHP \/ Docker
version: "3.5"
#Latest version
networks:
grid-network:
services:
selenium-hub:
image: selenium/hub:latest
container_name: 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
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
driver.close() will close your browser. just remove it if you want your browser still open
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.