0

I use this shell in Google Colab,

%%shell
# Ubuntu no longer distributes chromium-browser outside of snap
#
# Proposed solution: https://askubuntu.com/questions/1204571/how-to-install-chromium-without-snap

# Add debian buster
cat > /etc/apt/sources.list.d/debian.list <<'EOF'
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster.gpg] http://deb.debian.org/debian buster main
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster-updates.gpg] http://deb.debian.org/debian buster-updates main
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-security-buster.gpg] http://deb.debian.org/debian-security buster/updates main
EOF

# Add keys
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A

apt-key export 77E11517 | gpg --dearmour -o /usr/share/keyrings/debian-buster.gpg
apt-key export 22F3D138 | gpg --dearmour -o /usr/share/keyrings/debian-buster-updates.gpg
apt-key export E562B32A | gpg --dearmour -o /usr/share/keyrings/debian-security-buster.gpg

# Prefer debian repo for chromium* packages only
# Note the double-blank lines between entries
cat > /etc/apt/preferences.d/chromium.pref << 'EOF'
Package: *
Pin: release a=eoan
Pin-Priority: 500


Package: *
Pin: origin "deb.debian.org"
Pin-Priority: 300


Package: chromium*
Pin: origin "deb.debian.org"
Pin-Priority: 700
EOF

# Install chromium and chromium-driver
apt-get update
apt-get install chromium chromium-driver

# Install selenium
pip install selenium

then I run this code block

from selenium import webdriver
from selenium.webdriver.chrome.service import Service


chrome_options = webdriver.ChromeOptions()
service = Service(executable_path=r'/usr/bin/chromedriver')
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')


driver = webdriver.Chrome('chromedriver', options=chrome_options)
driver.get("url")

and I got this error


TypeError Traceback (most recent call last) in <cell line: 14>() 12 13 ---> 14 driver = webdriver.Chrome('chromedriver', options=chrome_options) 15 driver.get("url") 16

TypeError: WebDriver.init() got multiple values for argument 'options'

2 Answers2

0

Below line is not correct:

driver = webdriver.Chrome('chromedriver', options=chrome_options)

Change it to:

driver = webdriver.Chrome(service=service, options=chrome_options)
Shawn
  • 4,064
  • 2
  • 11
  • 23
0

Using you have to use the Service keyword. Additionally if you want to add the arguments you have to call add_argument() method on the ChromeOptions() instance which is options and assign it to the option keyword.


Solution

Implementing the above mentioned tweaks your effective code block will be:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

s = Service(r'/usr/bin/chromedriver')
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver', options=options)
driver.get("url")
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
  • When I tried this block I get. TypeError Traceback (most recent call last) in () 7 options.add_argument('--no-sandbox') 8 options.add_argument('--disable-dev-shm-usage') ----> 9 driver = webdriver.Chrome('chromedriver', options=options) 10 driver.get("https://www.sprintsandsneakers.com/en/") TypeError: WebDriver.__init__() got multiple values for argument 'options' – Jasper Ruijs Aug 07 '23 at 18:37