问题描述
我目前正在阅读有关硒的文档。 docs这部分让我有些困惑。 Perticuallary是基础页面的一部分。描述如下:
class BasePage(object):
"""Base class to initialize the base page that will be called from all pages"""
def __init__(self,driver):
self.driver = driver
但是,如果这是所有类的父级,则是假设。实例化驱动程序并将驱动程序的方法包装到更合适的代码中不是此类的责任吗?我的意思是这样:
class BasePage(object):
def __init__(self):
self.driver = webdriver.Firefox()
def findElementsByCss(self,selector):
return self.driver.find_element_by_css_selector(selector)
def visit(self,url):
return self.driver.get(url)
然后其他页面无需了解驱动程序,而只需
class FrontPage(BasePage):
def searchForItem(self,item)
return findElementsByCss(".input").send_keys( "hey" )
因此现在只需访问首页并搜索项目就非常简单。这是正确的想法还是我感到困惑?
解决方法
将webdriver用作类构造函数的参数使其更加通用。 您可以:
firefox_driver = webdriver.Firefox()
firefox_browser = BasePage(firefox_driver)
chrome_driver = webdriver.Chrome() (I hope that this method works)
chrome_browser = BasePage(chrome_driver)
您无需为Firefox和Chrome创建两个不同的类。