如何解决错误消息“'class_name' 对象没有属性 'driver'”
How do you solve the error message " 'class_name' object has no attribute 'driver' "
我已经安装了Safari webdriver和Selenium,但是当我执行下面的代码时
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
class class_name:
def _init_(self, username, pw):
self.username = username
self.password = pw
self.driver = webdriver.Safari()
sleep(2)
def login(self):
self.driver.get("https://google.com")
class_name().login()
弹出如下错误信息
Traceback (most recent call last):
File "/Users/malachinoel/PycharmProjects/MajorTomtoGroundControl/yes.py", line 22, in <module>
class_name().login()
File "/Users/malachinoel/PycharmProjects/MajorTomtoGroundControl/yes.py", line 18, in login
self.driver.get("https://google.com")
AttributeError: 'class_name' object has no attribute 'driver'
有办法解决这个问题吗?
你应该添加一个名为 driver 的参数,并使用 init 而不是 init:
def __init__(self, username, pw, driver):
self.username = username
self.pw = pw
self.driver = driver
然后,当你使用class时,你可以将webdriver.Safari()
作为驱动参数。
您的 __init__
两边好像少了一个下划线。我还建议将您的对象保存在一个变量中,否则您的 class_name().login()
偶尔会被垃圾收集,并且浏览器将关闭,因为它不再在范围内。 name = class_name().login()
很容易解决这个问题。
我认为,如果成员没有在 init 中定义为参数,则应该在 init 之前定义:
class class_name:
driver = None
def __init__(self, username, pw):
self.username = username
self.password = pw
self.driver = webdriver.Safari()
我已经安装了Safari webdriver和Selenium,但是当我执行下面的代码时
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
class class_name:
def _init_(self, username, pw):
self.username = username
self.password = pw
self.driver = webdriver.Safari()
sleep(2)
def login(self):
self.driver.get("https://google.com")
class_name().login()
弹出如下错误信息
Traceback (most recent call last):
File "/Users/malachinoel/PycharmProjects/MajorTomtoGroundControl/yes.py", line 22, in <module>
class_name().login()
File "/Users/malachinoel/PycharmProjects/MajorTomtoGroundControl/yes.py", line 18, in login
self.driver.get("https://google.com")
AttributeError: 'class_name' object has no attribute 'driver'
有办法解决这个问题吗?
你应该添加一个名为 driver 的参数,并使用 init 而不是 init:
def __init__(self, username, pw, driver):
self.username = username
self.pw = pw
self.driver = driver
然后,当你使用class时,你可以将webdriver.Safari()
作为驱动参数。
您的 __init__
两边好像少了一个下划线。我还建议将您的对象保存在一个变量中,否则您的 class_name().login()
偶尔会被垃圾收集,并且浏览器将关闭,因为它不再在范围内。 name = class_name().login()
很容易解决这个问题。
我认为,如果成员没有在 init 中定义为参数,则应该在 init 之前定义:
class class_name:
driver = None
def __init__(self, username, pw):
self.username = username
self.password = pw
self.driver = webdriver.Safari()