如何解决错误消息“'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()