Webdriver是否支持Python的pagefactory?

Webdriver是否支持Python的pagefactory?,python,webdriver,pageobjects,Python,Webdriver,Pageobjects,我在Webdriver项目网站上读到了关于设计和模式的文章,偶然发现了。它看起来不像Python API的Webdriver包含pagefactory。这是真的吗?我认为Python中没有Java注释(@Find(By.xxx)等)的等价物。但这并不意味着不能使用PageObject模式 您可以在这里找到一个很好的例子:像Python这样的动态类型语言不太喜欢设计模式来创建对象,因为只要创建任何类型的对象(使用适当的方法)并返回它就非常容易了。模式是常见问题的常见解决方案。如果某件事情不是问题,

我在Webdriver项目网站上读到了关于设计和模式的文章,偶然发现了。它看起来不像Python API的Webdriver包含pagefactory。这是真的吗?

我认为Python中没有Java注释(@Find(By.xxx)等)的等价物。但这并不意味着不能使用PageObject模式


您可以在这里找到一个很好的例子:

像Python这样的动态类型语言不太喜欢设计模式来创建对象,因为只要创建任何类型的对象(使用适当的方法)并返回它就非常容易了。模式是常见问题的常见解决方案。如果某件事情不是问题,您不需要模式来处理它:-)OOP最初是C中的一种设计模式

编辑,2017年12月:

在我们自己开发的页面自动化框架(用于自动化UI测试和其他目的)中,我们确实使用pageobject设计模式,但不需要页面工厂。来自我们定制的BasePage的旧式继承涵盖了我们所有(相当多样化)的需求。我们确实使用了一些技巧来创建页面元素,并确保实例化了正确的页面,基于这种经验,我喜欢我们的PageObject很简单

此外,如果您的需求变得更加复杂,Python允许多重继承


根据我的经验(使用Python、Selenium和WebDriver已经5年多了),缺少页面工厂模式表明您不需要它,而不是它无法实现。

我创建了一个名为
pageobject\u support
的模块,它以pythonic的方式实现PageFactory模式

使用此模块,谷歌搜索页面可以建模如下:

from pageobject_support import cacheable, callable_find_by as find_by
from selenium.webdriver.common.by.By

class GoogleSearchPage(object):

    _search_box = find_by(how=By.NAME, using='q', cacheable=True)

    _search_button = find_by(name='btnK')

    def __init__(self, driver):
        self._driver = driver

    def search(self, keywords):
        self._search_box().click()
        self._search_box().send_keys(keywords)
        self._search_button().click()

非常感谢您的反馈。有关更多详细信息,请访问

这里有一篇文章介绍如何在Python中与Selenium一起使用PageObject模式:指向上述dealink的wayback机器链接链接已更改为链接已再次更新为