我正在阅读关于page objects和Webdriver项目网站上的设计模式,并且遇到了pagefactory。它看起来不像Python API的Webdriver包含pagefactory。这是真的?Webdriver是否支持Python的pagefactory?
7
A
回答
5
我不认为在Python中有Java注释(@Find(By.xxx)等)的任何等价物。但这并不意味着你不能使用PageObject模式。
你可以找到如何在这里做的很好的例子:https://github.com/SeleniumHQ/selenium/blob/master/py/test/selenium/webdriver/common/google_one_box.py
4
动态类型语言如Python不太痴迷的设计模式来创建对象 - 因为它是十分容易只是创建任何类型的对象(正确方法)并返回它。模式是常见问题的常见解决方案。如果事情是没有问题的,你并不需要一个模式来解决它:-) OOP最初在C.
设计模式编辑,2017年12月:
在我们自主开发的框架页面自动化(用于自动UI测试和其他目的),我们确实使用pageobject设计模式,但不需要页面工厂。我们定制的BasePage的老派继承覆盖了我们所有(相当多样化)的需求。我们使用一些技巧来创建页面元素,并确保正确的页面被实例化,并且基于这样的经历,我喜欢我们的PageObject是简单的。
此外,如果您的需求变得更加复杂,Python允许多继承。
根据我的经验(现在使用Python,Selenium和WebDriver超过5年),页面工厂模式的缺乏是您不需要它的标志,并非它无法实现。
1
我创建了一个名为pageobject_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()
您的宝贵意见:
有了这个模块,如下谷歌搜索页面可以近似。有关更多详细信息,请访问https://jeremykao.wordpress.com/2015/06/10/pagefactory-pattern-in-python/
相关问题
- 1. Android WebDriver是否支持set_page_load_timeout?
- 2. 是否硒的webdriver支持Struts 2的
- 3. Selenium WebDriver - Ruby,PageFactory,PageObject
- 4. PySide是否支持Python 3?
- 5. python WSGI是否支持IPv6?
- 6. CMAKE是否支持Python 3?
- 7. python是否支持EXT3
- 8. cql是否支持python 3?
- 9. 浏览器支持WebDriver还是WebDriver支持浏览器
- 10. Watir-Webdriver是否支持单击目标是JavaScript的链接?
- 11. Wait.until()与Webdriver PageFactory元素
- 12. python的xml.etree.ElementTree是否支持DTD?
- 13. Hadley的ddply是否支持python?
- 14. 是否支持Python 2.6.x的注释
- 15. 是否有支持python 2.6的ftps库?
- 16. 任何支持python的webhosting服务是否也支持django?
- 17. watir-webDriver是否支持通过灯箱创建的modal_dialogs?
- 18. 支持WebDriver和WebDriver的JUnit格式
- 19. 是否支持Python 3.5并使用Postgresql?
- 20. Intellij Ultimate 12是否支持Python/Django?
- 21. Python 3:请问http.server是否支持ipv6?
- 22. Flink 1.2是否支持Python编程?
- 23. Azure Python SDK是否支持帐单API?
- 24. cql python库是否支持Cassandra v2?
- 25. Google App Engine是否支持Python 3?
- 26. Arrayray python是否支持多GPU编程
- 27. Python中是否支持稀疏矩阵?
- 28. python是否支持枚举类型?
- 29. C#+ webdriver的PageFactory + NUnit的3可并行
- 30. 是否支持groovvy
以下是有关如何在Selenium中使用Python中的PageObject模式的文章:http://pragprog.com/magazines/2010-08/page-objects-in-python – jononomo