您如何解决错误消息“'class_name'对象没有属性'driver'”

问题描述 投票:0回答:3

我已经安装了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'

是否有解决此问题的方法?

python python-3.x selenium safari webdriver
3个回答
1
投票

您应该添加一个名为driver的参数,并使用init代替init

def __init__(self, username, pw, driver):
    self.username = username
    self.pw = pw
    self.driver = driver 

然后,在使用该类时,可以将webdriver.Safari()作为驱动程序参数。


0
投票

[似乎您的__init__的每一边都缺少下划线。我还建议将您的对象保存在变量中,否则您的class_name().login()偶尔会被垃圾回收,并且浏览器将因为其作用域范围而关闭。 name = class_name().login()对此很容易解决。


0
投票

我认为,如果未在init中定义为参数,则成员应在初始化之前定义:

class class_name:
driver = None

def __init__(self, username, pw):
    self.username = username
    self.password = pw
    self.driver = webdriver.Safari()
© www.soinside.com 2019 - 2024. All rights reserved.