gpt4 book ai didi

python - Selenium 类型错误: __init__() got an unexpected keyword argument 'service'

转载 作者:行者123 更新时间:2023-12-02 01:45:08 24 4
gpt4 key购买 nike

我正在将我的应用程序从过程代码重构为 OOP。我正在尝试做这个驱动程序类。

更新:这适用于 Windows,但不适用于 Mac。

# IMPORTS
from sys import platform
import os
from os import system

from selenium import webdriver
from selenium.webdriver import Firefox, FirefoxOptions
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# import Action chains
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from selenium.webdriver.firefox.service import Service

class Driver():
def __init__(self):
#set executable path to driver
self.dirname = os.path.dirname(__file__)
if platform == "win32":
self.executable_path = os.path.join(self.dirname, 'geckodriver.exe') #must save the gecko file to same directory where python is. path to geckodriver (firefox drive/motor) on your machine
print("Gecko (Firefox) filepath is: ", self.executable_path)
if platform == "darwin":
self.executable_path = os.path.join(self.dirname, 'geckodriver') #must save the gecko file to same directory where python is. path to geckodriver (firefox drive/motor) on your machine
print("Gecko (Firefox) filepath is: ", self.executable_path)

self.service = Service(self.executable_path)

self.opts = FirefoxOptions()
#self.opts.add_argument(f"--width={int(screen_width/4)}")
#self.opts.add_argument(f"--height={int(screen_height/2)}")

self.driver = Firefox(service=self.service, options=self.opts)

self.driver.set_window_position(-10, 0)

self.driver.get("https://google.com/")

Driver()

这会给我以下错误:

Traceback (most recent call last):
File "/driverClass.py", line 72, in <module>
Driver()
File "/driverClass.py", line 66, in __init__
self.driver = Firefox(service=self.service, options=self.opts)
TypeError: __init__() got an unexpected keyword argument 'service'

这是为什么呢?我正在将代码重构为 OOP。该代码之前在使用过程代码时有效。

这是来自工作代码:

# driver configs
service = Service(executable_path) #pass in path to geckodriver
opts = FirefoxOptions()
#opts.add_argument(f"--width={int(screen_width/4)}")
#opts.add_argument(f"--height={int(screen_height/2)}")
driver = Firefox(service=service, options=opts)

driver.set_window_position(-10, 0)
#driver.set_window_size(int(screen_width/4), int(screen_height))

driver.get("https://google.com/")

最佳答案

此错误消息...

TypeError: __init__() got an unexpected keyword argument 'service'

...暗示 service 是意外的关键字参数。

可能的原因,您还在使用Selenium v3.x关键字参数 服务不支持。


解决方案

Selenium 4.0 Beta 1 :

Deprecate all but Options and Service arguments in driver instantiation. (#9125,#9128)

因此您需要升级到Selenium 4.x


引用文献

您可以在以下位置找到一些相关的详细讨论:

关于python - Selenium 类型错误: __init__() got an unexpected keyword argument 'service' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70993717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com