web浏览器自动化框架

LuluTest的Python项目详细描述


Build Status

露露试验

LuluTest是一个使用Python和Selenium的开源浏览器自动化框架。 它相对轻量级,因为它主要为第三方库方法提供了包装器,使浏览器自动化和测试更加直观。 LuluTest的最终目标是通过抽象出固有的复杂性和特性,让人们快速编写健壮的自动浏览器脚本

特别感谢

下面的Github用户在某种程度上为LuluTest做出了贡献,我非常感谢他们的时间、努力和技能。在

@旺戈尼亚

@本吉夫斯

@阿尔温内德

@ddrm86

@MarioHdpz公司

@法里亚姆

@carolinamotive公司

基本用途

LuluTest旨在支持白盒和黑盒测试。功能 只要运行脚本的机器可以访问页面,提供的就可以工作 正在测试中。在

创建测试的基本工作流程如下:

  1. 使用要测试的页面的URL创建一个Page对象。在
  2. 创建一个将与元素交互的Action对象
  3. 为要测试的页面上的每个元素创建一个Element对象
  4. go到要测试的页面
  5. 创建要在页面上执行的操作的Steps对象
  6. DoSteps
  7. 做你的断言

示例用法

下面是一个示例测试用例:

importunittestfromLuluTest.lulu_exceptionsimportPageNotLoadedErrorfromLuluTest.pageimportPagefromLuluTest.elementimportPageElementfromLuluTest.actionimportActionfromstepimportStep,Do,DoStep,StepsclassExampleTest(unittest.TestCase):deftest_write_and_click(self):page=Page('http://erikwhiting.com/newsOutlet')actions=Action()page.elements=[PageElement(("id","sourceNews"),"input box"),PageElement(("id","transmitter"),"button"),PageElement(("id","en1"),"english div")]actions.go(page)actions.input_text(page.get_element("input box"),"Hello")actions.click(page.get_element("button"))english_div=page.get_element("english div")english_text=actions.check_element_text(english_div,"Hello")self.assertTrue(english_text)actions.close()

或者,也可以通过YAML或JSON构建页面并导入 它们是供使用的。例如,上面的页面可以在newso_outlet.yml中建模 像这样:

^{pr2}$

将此文件导入测试脚本以避免编写元素查找代码:

# In a setup method:base_path=os.getcwd()prebuilt_pages_directory=base_path+'/fixtures/pages/'page_configs=[prebuilt_pages_directory+'news_outlet.yml',prebuilt_pages_directory+'other_page.yml',prebuilt_pages_directory+'even_another_page.json',]pages=page_factory.generate_pages(page_configs)# Now all subsequent tests have access to this page objectdeftest_basic_usage(self):page=self.pages['news_outlet']actions=Action()actions.go(page)actions.input_text(page.get_element("input_box"),"Hello")actions.click(page.get_element("button"))english_div=page.get_element("english_div")english_text=actions.check_element_text(english_div,"Hello")self.assertTrue(english_text)actions.close()

特点

LuluTest的开发有两种主要的设计理念:

  1. 隐藏浏览器自动化固有的乏味和特性 从测试脚本本身,允许测试人员高效地编写 更快速地进行健壮的测试

  2. 尽可能简化测试编写过程,这样就不需要技术性了 用户可以提供基本测试用例,同时释放技术 用户关注更复杂的技术问题。在

这些哲学主要是通过保持有时缓慢的 考虑web元素的响应时间。该项目旨在避免 尽可能多的等待和睡眠。在

LuluTest建筑

2019年12月至2020年1月,LuluTest建筑 用更好的原则重新设计并以所描述的方式实现 在下面的图片中。如果有贡献,请尽你所能坚持 预定的建筑。在

LuluTest Architecture

今后的工作

LuluTest的最终目标是增强领域特定语言来提供帮助 促进业务和技术利益相关者之间关于 要求和测试。在

投稿指南

请参阅Contribution Guide

设置指南

要设置本地环境以帮助测试,请转到Set-Up Guide

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在java代码中实现两个侦听器时发生swing错误   Lambda是否完全取消了Java8中匿名内部类的使用?   swing OpenSuse 12.3+Java双显示   POM中的java错误。xml文件,即使在清理{users}/之后。m2/用于*上次更新文件的存储库   JavaEDT特定的方法和其他东西   java如何使用GridLayout设置组件大小?有更好的办法吗?   java在itext7中生成二维码时,如何调整点的大小?   java如何在多行上显示文本并右对齐?   java在WebSphereCluString环境中分离Log4j日志   JAVA从文件读取,返回BigInteger值   当使用rxjava2进行排列时,使用javamockito。重试()   在java fasterxml中创建Xml   使用64位整数进行模运算的64位整数的java快速乘法,无溢出   java静态变量保留以前发布的值   datastax enterprise SSTable loader流式处理无法提供java。木卫一。IOException:对等方重置连接   java匹配的通配符是严格的,但找不到元素“mvc:annotationdriven”的声明。标准包装。可抛出   java无法在浏览器上下载文件文档?