项目场景:
【使用构造函数传递一个实例化的浏览器driver】
实例化浏览器后,需要将driver传递给另一个类,避免开启多个浏览器窗口。
class Test1:
def test_01():
self.driver = webdriver.Chrome()
self.driver.get(“https://work.xxxxxx.com/”)
cookies = yaml.safe_load(open(“…/cookie_data.yaml”))
for cookie in cookies:
self.driver.add_cookie(cookie)
# 需要手动定向到被测地址
self.driver.get(“https://wxxxxxxxxxin/frame”)
self.driver.implicitly_wait(3)
self.driver.find_element(By.ID, “mexxxxts”).click()
#
return ContactPage(self.driver)
class ContactPage:
def ini(self, driver):
self.driver = driver
问题描述
这段代码看似没有问题,但是一旦执行,就会提示:
return ContactPage(self.driver)
E TypeError: ContactPage() takes no arguments
原因分析:
亮点就在这个类里面,来来回回试了很多方法都没发现-。-!!
class ContactPage:
def ini(self, driver):
self.driver = driver
构造函数__init__而不是__ini__
python提供的魔法方法以__开头和结尾,并没有
__ini__方法,所以定义一个__ini__函数并不会提示函数命名错误,只会有颜色变化,魔法函数是紫色的,普通自定义函数是黄色的。
解决方案:
def ini(self, driver):
self.driver = driver
改为:
def init(self, driver):
self.driver = driver