Rec*_*Dan 7 python inheritance selenium webdriver base-class
我为这一个搜索了一会儿,很惊讶我找不到任何东西,也许是因为它很简单.我已经在python中编程了大约3个月,使用selenium webdriver进行自动化测试.我认为让类继承自我的webdriver类以向其添加更多功能会很方便.
from selenium import webdriver
class myPage(webdriver):
def __init__(self):
super(myPage, self).__init__()
def set_up(self):
#doStuff...
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得到错误>>>
File "c:\Users\me\...\myProgram.py", line 6, in <module>
class myPage(webdriver):
TypeError: module.__init__() takes at most 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)
当我创建myPage对象时代码是......
from myProgram import myPage
class Test():
def do(self):
self.browser = myPage.Firefox()
Run Code Online (Sandbox Code Playgroud)
所以它通过并运行self.browser = myPage.Firefox()行,当它运行时.__init __()不知怎的,它给了它三个参数,我不知道它们来自哪里.我显然遗漏了一些东西,因为继承并不难.谢谢你的帮助
小智 9
你必须改变:
class myPage(webdriver)
Run Code Online (Sandbox Code Playgroud)
至:
class myPage(webdriver.Firefox)
Run Code Online (Sandbox Code Playgroud)
但是,这将删除选择要运行它的浏览器的功能.这是因为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)
Run Code Online (Sandbox Code Playgroud)