You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeError: WebDriver.__init__()重复传入'options'参数问题求助

Selenium+YandexDriver报错:TypeError: WebDriver.init() got multiple values for argument 'options'

运行Selenium结合YandexDriver(适配Yandex浏览器)时触发错误:
TypeError: WebDriver.__init__() got multiple values for argument 'options'

此前第一段代码曾正常运行,昨日突然出现问题,调整代码后仍无法解决。使用的是适配Yandex浏览器的YandexDriver,而非标准ChromeDriver。

问题代码

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

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common import keys
from selenium.webdriver.support.select import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import time
from tkinter import*
from tkinter import*
from tkinter import Frame, Tk, BOTH, Text, Menu, END
from tkinter import filedialog
import csv
import pandas as pd
from docx import Document
from random import choice
from docxtpl import DocxTemplate
from tkcalendar import DateEntry
import datetime
url = 'https://elibrary.ru/'

# 第一次尝试:之前正常运行,昨日报错
# options = webdriver.ChromeOptions()
# options.add_experimental_option('excludeSwitches', ['enable-logging'])
# binary_yandex_driver_file = 'yandexdriver.exe' # YandexDriver路径
# driver = webdriver.Chrome(binary_yandex_driver_file, options=options)
# driver.get(url)

# 第二次尝试:仍报错
service = Service(executable_path=r'./yandexdriver')
options = webdriver.ChromeOptions()
options.add_argument('--headless')
binary_yandex_driver_file = 'yandexdriver.exe'
driver = webdriver.Chrome(binary_yandex_driver_file, service=service, options=options)

wait = WebDriverWait(driver, 10)
original_window = driver.current_window_handle
assert len(driver.window_handles) == 1

错误原因

Selenium 4+版本中,webdriver.Chrome()的第一个位置参数是service对象。第二次尝试的代码同时传入了位置参数binary_yandex_driver_file和关键字参数service,导致驱动路径被重复传递,进而和options参数产生冲突。

修复方案

  1. 仅通过Service对象指定YandexDriver的路径,不要将驱动文件路径作为位置参数直接传给webdriver.Chrome()
  2. 如果Yandex浏览器未安装在系统默认路径,需在ChromeOptions中指定浏览器二进制文件路径

修正后的代码示例

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

# 配置Service,指定YandexDriver路径
service = Service(executable_path='./yandexdriver.exe')
# 配置ChromeOptions
options = webdriver.ChromeOptions()
options.add_argument('--headless')
# 若Yandex浏览器不在默认路径,添加以下配置(替换为你的浏览器exe路径)
# options.binary_location = r'C:\Users\你的用户名\AppData\Local\Yandex\YandexBrowser\Application\browser.exe'

# 初始化Driver
driver = webdriver.Chrome(service=service, options=options)
driver.get('https://elibrary.ru/')

wait = WebDriverWait(driver, 10)
original_window = driver.current_window_handle
assert len(driver.window_handles) == 1

内容的提问来源于stack exchange,提问作者Migika sss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:07:44