我已经安装了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
然后,在使用该类时,可以将webdriver.Safari()
作为驱动程序参数。
[似乎您的__init__
的每一边都缺少下划线。我还建议将您的对象保存在变量中,否则您的class_name().login()
偶尔会被垃圾回收,并且浏览器将因为其作用域范围而关闭。 name = class_name().login()
对此很容易解决。
我认为,如果未在init中定义为参数,则成员应在初始化之前定义:
class class_name:
driver = None
def __init__(self, username, pw):
self.username = username
self.password = pw
self.driver = webdriver.Safari()