I'm refactoring my app from procedural code to OOP. I am trying to do this Driver class.
# IMPORTS from sys import platform import os from os import system if platform == "win32": import win32gui # import module to set focus to specified window so that hotkeys work on that. import win32con import win32api 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() This will give me the following error:
TypeError: init() got an unexpected keyword argument 'service'
Why is this? I'm refactoring my code to OOP. The code worked before when using procedural code.