我为这一个搜索了一会儿,我很惊讶我找不到任何东西,也许是因为它很简单。我已经在python中编程了大约3个月,使用selenium webdriver进行自动化测试。我认为让类继承自我的webdriver类以向其添加更多功能会很方便。
from selenium import webdriver
class myPage(webdriver):
def __init__(self):
super(myPage, self).__init__()
def set_up(self):
#doStuff...
但是当我这样做时,我得到错误>>>
File "c:\Users\me\...\myProgram.py", line 6, in <module>
class myPage(webdriver):
TypeError: module.__init__() takes at most 2 arguments (3 given)
当我创建myPage对象时,代码是......
from myProgram import myPage
class Test():
def do(self):
self.browser = myPage.Firefox()
所以它通过并运行self.browser = myPage.Firefox()行,当它运行时。 __ init __ ()不知何故它给它三个参数,我不知道它们在哪里来自。我显然遗漏了一些东西,因为继承并不难。谢谢你的帮助
答案 0 :(得分:8)
你必须改变:
class myPage(webdriver)
要:
class myPage(webdriver.Firefox)
但是,这会删除选择要运行它的浏览器的功能。这是因为webdriver实际上不是一个类,而是一个包(我相信)。当你调用类似:webdriver.Firefox()的东西时,它实际上是Firefox类的一个实例,而不是webdriver类。为了得到你想要的东西你最好做这样的事情:
from selenium import webdriver
class myPage(webdriver.Firefox, webdriver.Chrome, webdriver.Ie):
def __init__(self, browser):
if browser.lower() == "ie":
webdriver.Ie.__init__(self)
elif browser.lower() == "chrome":
webdriver.Chrome.__init__(self)
else:
webdriver.Firefox.__init__(self)