我试图在call get_driver_path
方法内运行__new__
,当我尝试运行完整代码时出现以下错误:
TypeError: unbound method get_chrome_driver() must be called with
WebBrowserManager instance as first argument (got str instance instead
代码如下:
def __new__(self, driver = 'firefox'):
if not self._instance:
self._instance = super(WebBrowserManager, self).__new__(self)
self._profile.native_events_enabled = True
self.data = {}
self._system = platform.system()
if self._local:
if driver == 'firefox':
self.browser = webdriver.Firefox(self._profile)
elif driver == 'chrome':
self.browser = self.get_chrome_driver(self._system, driver)
elif driver == 'ie':
assert self._system == 'Windows', 'Tests on Internet Explorer are only supported on Windows'
self.browser = webdriver.Ie(self.get_driver_path(driver))
return self._instance
def get_driver_path(self, driver):
driver_name = ''
if driver == 'ie':
driver_name = 'IEDriverServer.exe'
elif driver == 'chrome':
driver_name = 'chromedriver.exe'
driver_path = "selenium_drivers\\" + driver_name
os.environ["webdriver." + driver + ".driver"] = driver_path
return driver_path
由于您将其设置为实例方法,因此需要在
__new__
方法中创建的实例上调用它(该方法是静态的;例如,不绑定到实例或类):您可以将该方法设为静态方法或类方法,此时您可以通过
__new__
的第一个参数使用它(这是类,不是实例;通常不使用名称self
,而是cls
):请注意,
staticmethod
然后不接受self
参数,但您的get_driver_path()
实现无论如何都不会使用该参数。你知道吗相关问题 更多 >
编程相关推荐