Я пытаюсь использовать Python 3, чтобы создать объект Selenium с введите и Выйдите функции, так что я могу использовать его следующим образом:Python с утверждением (__enter__ и __exit__) не может вызвать функцию
with Browser() as browser:
brower.getURL('http://www.python.org')
Однако всякий раз, когда я пытаюсь запустить это я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "browser.py", line 54, in <module>
print(browser.getURL(url))
AttributeError: 'NoneType' object has no attribute 'getURL'
кто-нибудь знает, что я делаю неправильно? Ниже мой код:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
CHROMEBROWSERLOCATION = './drivers/chromedriver'
class Browser(object):
"""Handles web browser"""
def __init(self):
"""Class Initialization Function"""
def __call__(self):
"""Class call"""
def startDriver(self,browser="chrome"):
"""Starts the driver"""
#Make sure that the browser parameter is a string
assert isinstance(browser,str)
#Standardize the browser selection string
browser = browser.lower().strip()
#Start the browser
if browser=="chrome":
self.driver = webdriver.Chrome(CHROMEBROWSERLOCATION)
def closeDriver(self):
"""Close the browser object"""
#Try to close the browser
try:
self.driver.close()
except Exception as e:
print("Error closing the web browser: {}".format(e))
def getURL(self,url):
"""Retrieve the data from a url"""
#Retrieve the data from the specified url
data = self.driver.get(url)
return data
def __enter__(self):
"""Set things up"""
#Start the web driver
self.startDriver()
def __exit__(self, type, value, traceback):
"""Tear things down"""
#Close the webdriver
self.closeDriver()
if __name__ == '__main__':
url = 'http://www.python.org'
with Browser() as browser:
print(browser.getURL(url))
Это сделало это, спасибо за урок! – user2694306
BTW ... (Не должно иметь никакого значения, поскольку он пуст, но) вероятно, '__init' должен был быть' __init__' –