navmazing 1.1.6
pip install navmazing
上次发布日期:
一个简单的导航框架
- 您所在的位置:
- Python中文网 >
- pypi >
- navmazing库 >
- 正文
navmazing的Python项目详细描述
导航
简介
支持复杂设计的简单导航框架
设计
navmazing基于许多导航步骤,这些步骤是navigatestep对象的子类。这些步骤对象通过定义一个先决条件方法具有关系,如果确定我们不是请求步骤的当前成员,则该方法可以转到上一步。从第一步开始并访问链中的所有先决条件直到解决这些先决条件为止的步骤链构成了一个完整的导航。
使用量
下面是一个例子。这将创建一个简单的类来建模某些提供者对象,该对象在ui中有三个目的地或页面:一个new页面、一个details页面和一个all页面。new页面是添加新提供者的位置,all页面是查看所有提供者列表的位置。要进入new页面,必须首先访问all页面。details页面是显示特定提供程序的位置。在下面的示例中,您可以看到我们对一些非常简单的步骤建模并将它们注册到类中。
fromnavmazingimportNavigate,NavigateStep,NavigateToSiblingnavigator=Navigate()classProvider(object):def__init__(self,name):self.name=name@navigator.register(Provider,'Details')classProviderDetails(NavigateStep):prerequisite=NavigateToSibling('All')defstep(self):click(self.obj.name)@navigator.register(Provider,'New')classAddANewProvider(NavigateStep):prerequisite=NavigateToSibling('All')defstep(self):click('Add New Button')@navigator.register(Provider,'All')classShowAllProviders(NavigateStep):defam_i_here(self):returncheck_if_i_am_already_on_page()defstep(self):click('All button')
类ShowAllProviders表示到达all页的步骤。这个类有两个方法,am_i_here()和step()。step()方法描述了我们应该如何执行进入all页面的步骤。假设在这个特定的ui中,all按钮总是可见的。am_i_here()方法是一种查询我们是否已经在此页上的方法。如果可以确定我们已经在请求访问的页面上,则此选项用于快捷导航。
类AddANewProvider表示进入新页面的步骤。这个类有一个属性和一个方法。prerequisite实际上是一个python描述符。它使用NavigateToSiblinghelper导航到已请求访问new页的同一对象上的all目标。可以简单地使prerequisite成为一个函数,用self.obj和All目标调用navigate_to。不过,helper更好一些,使定义先决条件的步骤更清晰一些。
类ProviderDetails表示到达特定提供程序页的步骤,它的详细信息页。这个类与AddANewProvider类相同,因为它首先要求按下all按钮。注意在step()方法中,有一个对self.obj的引用。此对象是传递到导航步骤的对象,如下所示。在下面的示例中,这个对象称为prov。
# Non helper methoddefprerequisite(self):navigator.navigate(self.obj,'All')# Using helper methodprerequisite=NavigateToSibling('All')
要使用上面的代码,需要实例化一个provider对象,然后使用如下导航方法:
prov=Provider('name')navigator.navigate(prov,'Details')
导航助手
Navmazing有几个帮助程序,使先决条件更易于定义
- NavigateToSibling-导航到与当前请求注册到同一对象的目标。
- NavigateToAttribute-导航到与当前请求注册到同一对象的属性的目标。如果对象具有某种层次结构,并且您希望导航到针对某个属性而不是对象本身注册的步骤,则此选项非常有用
- NavigateToObject-导航到已注册到所提供对象的目标,可以认为可以通过navigatetoobject调用来实现navigatetoattribute,只需提供属性对象作为对象。在这些情况下,使用navigatetoattribute感觉更加动态和干净,因为属性是一个被查找的字符串,而不是一个静态的对象。
流程图
下图显示了流程图使用库存导航库解析导航的过程。由于这些方法是可重写的,因此可以更改流,但对于大多数使用来说应该足够了。
高级使用
navmazing还允许在导航调用时传递参数。这意味着您可以在导航目的地中允许某种程度的动态性质或选择。举个例子来说,你有一个步骤通常是单向的,但有时你需要克服这种行为,让它以不同的方式工作。
@navigator.register(Provider,'Details')classProviderDetails(NavigateStep)prerequisite=NavigateToSibling('All')defstep(self,active=True):ifchoice:click(self.obj.name)else:click(self.obj.name+" - inactive")# Call by defaultnavigate(obj,'Details')# Call, passing in a parameter for choicenavigate(obj,'Details',active=False)
在上面的示例中,传递active参数会更改步骤的行为。
推荐PyPI第三方库
d-arth
卫星图像数据集工具包
djangoconstrainedfilefield
防止攻击的包
QiDataProcessing
从自定义字节文件读取数据
yapbol
又是一个PBO图书馆
splicejunxchx
描述输出的拼接接头SJ.out.tab文件
supernest
在嵌套采样包(如PolyChord和Multinest)中使用SSPR的包装器
dashboard-clients
E360 Python仪表板服务客户端
random-publication-test
项目描述
bip-utils
实现了BIP39、BIP32、BIP44、BIP49和BIP84的钱包种子、密钥和地址生成。支持的硬币:比特币、比特币现金、比特币SV、Litecoin、Dogecoin、Dash、Zcash、以太坊、以太坊经典、VeChain、Ripple、Tron、Cosmos、Band Protocol、Kava、IRIS Network、Binance Coin。
tap-darksk
歌手.io用于从Darksky API提取数据的点击
soadrl-crowdnav
未提供项目说明
ttyodist
高斯分布和二项式分布
abdulmajed
将英语键盘按钮转换为与之对应的阿拉伯语键盘按钮
https.server
https://服务器封装在TLS中的SimpleHTTPServer
dna-workflows
dna工作流是执行dna工作流包的基本工作流引擎
导 航 栏
项目 链接
标 签
许可证: BSD许可证(BSD 3条款)
作者信息:: 暂无
最新PyPI项目
- italian_vip_says
- UFx
- vofs
- fake_item_generator
- NerEva
- django-monologue
- fio_product_attribute_strict
- climailsystem
- pyshape
- tbb-devel
- npy-append-arra
- anthill.tal.macrorenderer
- odoo11-addon-stock-a
- uuuu
- contextil
- fyl_nester
- appomatic_renderable
- teacher
- chuletas
- slackbot_ce
最新Python常见问题
- 如何测试setup.py?
- 如何测试Singleton\u del\u()方法?
- 如何测试slack api团队加入活动
- 如何测试soapweb服务的RPC?
- 如何测试SocketIO服务器连接(使用pytest或任何其他包)?
- 如何测试stanfordnlp是否在gpu上运行?
- 如何测试stdin脚本“live”,通常程序在后台与之交互?
- 如何测试tensorflow cifar10 cnn tutorial mod
- 如何测试Tkinter标签调用
- 如何测试Tornado处理程序正确调用另一个API?
- 如何测试unittests中引发的命名CheckConstraint或ValidationError?
- 如何测试URL是否被调用(从另一个线程内部)
- 如何测试uuuu name_uuuuuuu==“uuuuuu main_uuuuuuuuuuuuuu”以增加覆盖率
- 如何测试WindowStaysOnTopHint标志是否设置在windowFlags中?
- 如何测试X是否像list/tup那样嘎嘎作响