自动测试,可以用来做GUI测试。

telenium的Python项目详细描述


#telenium为远程测试或控制基于kivy的应用程序提供了一个框架:

-使用类似xpath语法的选择器支持(`//boxlayout[0]/button[@text~="close"]`)
-通过触摸ui创建选择器代码
-`unittests`支持
-集成为kivy模块
-web ide
-python 2和3(从0.4版开始,使用json-rpc)

![Telenium IDE](https://cloud.githubusercontent.com/assets/37904/22790912/f44b8166-eee7-11e6-9a78-120f78bde220.png)

![Telenium IDE导出](https://cloud.githubusercontent.com/assets/37904/22791059/70fb6988-eee8-11e6-91f4-0b87af33b5b6.png)


在您最喜欢的WebBrowser中打开一个新的
选项卡。您将能够配置main.py
的位置,并直接开始编写测试:

`````
``````
````

`>```>telenium json:

`````
``````
telenium tests/test ui myfeature.json
```

"不要使用IDE,为了远程控制你的应用程序,
你需要在你的应用程序中安装Telenium客户端。

r/>`` python
python-m telenium.execute m a in.py
```

方法2:将telenium_客户端作为kivy模块添加到应用程序中

os.path import dirname
从kivy.modules import modules
从kivy.config import config
modules.add_path(dirname(uu file_uu))
config.set("modules","telenium_u client","")
`````

还需要在依赖项中添加"python jsonrpc"(pip install python jsonrpc`)

#连接到Telenium就绪的应用程序

我们有一个命令行客户端可供使用。应用程序启动后,
您可以连接到:

$python-m telenium.client localhost

然后使用它。` cli是telenium客户机,您可以在其中调用远程
命令。请参阅"telenium commands"以了解可以执行的操作:

``python
>;>;id=cli.pick();然后单击ui
>;>;cli上的某个位置。单击(id)
true
>;>;cli.setattr("//label","color",(0,1,0,1))
true
````

意味着它已经成功了,否则它将返回none.


目前,它已经过测试和编码,只能使用子流程在本地工作。


附加方法:
-`assertexists(selector,timeout=-1)`和
`assertnotexists(selector,timeout=-1)`来检查应用程序中是否存在选择器
。它们都有一个"timeout"参数,如果达到该参数,则测试将失败。
-`cli.wait掴click(selector,timeout=-1)`:等待选择器匹配的简单方法,
然后单击第一个小部件。

在菜单中单击需要保存CSV的位置(`SaveButton`,`CascadeSaveButton`然后`SaveCsvButton`)
-然后在最多2秒的时间等待弹出窗口显示标签"Export to CSV"
-然后单击弹出窗口中的"Close"(关闭)按钮
-然后通过检查标签i确保弹出窗口已关闭不见了。

示例:

``python
from telenium.test s import teleniumtestcase

class uitestcase(teleniumtestcase):
cmd_entrypoint=["main.py"]

def test_export_csvelf):
self.cli.wait\u click("//savebutton")
self.cli.wait\u click("//cascadesavebutton")
self.assertexists("//label[@text~=\"export to csv\"],timeout=2)
self.cli.wait\u click("//fitbutton[@text=\"close\",timeout=2)
self.assertnotexists("////label[@text~=\"export to csv\"],timeout=2)
````


每个新的TeleniumTestCase都将关闭并启动应用程序,因此您总是从干净的应用程序运行。如果在开始
测试之前总是需要做一些事情,那么可以重载"init"。这将在类中的任何
测试开始之前执行一次:

`` python
类uitestcase(teleniumtestcase):
def init(self):
self.cli.wait\u click("//presetselectionitem[@text!~=\"ttyusb0 on mintel\",
timeout=10)
self.cli.wait\u click("//button[@text=\"connect\")
self.cli.wait("//bottomlabel[@text=\"done\",timeout=10)
`````

r/>类uitestcase(teleniumtestcase):
process_start_timeout=5
cmd_env={"i_am_running_test":1}
````

telenium commands

`version()`(api v1)

返回当前api版本。您可以使用它来了解哪些方法是可用的。


>``python
>>>gt;cli.version()
>1
````



`select(selector)`(api v1)


>

>


>``python
>gt>gt>gt>cli.cli.select(///label)
>1
>1
>````````````````````]",u"/windowsdl/gridlayout/label[1]]
`````

``getattr(选择器,键)``(api v1)`(api v1)`(api v1)`


>
>返回由"选择器"找到的第一个小部件上的属性值。

```python
>;cli.getattr("///label","text")
>u"你好世界"
``````



`>getattr(///label,"/text"
>u"你好世界"
```````````````````````值)`(API v1)

`对于所有匹配
`selector`.
>
>
``python
>>>gt;cli.setattr(///label,"///label,""text,""plop")
true
````
>

`element(selector)`(api v1)`(api v1)


>return`true`如果至少有一个小部件匹配"selector`.

>``python
>
>;gt;gt;cli.element("///label""///label")")>








正确t;cli.element("//invalidbutton")
false
````

``execute(code)`(api v1)


execute python code in the application.只有指向当前正在运行的应用程序的"app"符号可用。如果代码执行,则返回true;如果代码失败,则返回
false。例外情况是使用应用程序日志打印。

``python
>;>cli.execute("app.call_one_app_method")
true
````

`pick(all=false)`(api v1)

在触摸屏幕的地方。



``python
>>>gt;cli.pick()
>u'/windowsdl/button[0]
>>gt>gt>gt;cli.pick(all=true)
[u'/windowsdl/button[0]'/u'/windowsdl']
```


` ``点击(选择器)``(api v1)`(api v1)`(api v1)`(api v1)`(api v1)`(api v1)`(api v1)`>br/>

/>br/>模拟触摸/上下/上下/上下/上下与"selector"匹配的第一个小部件。如果成功,则返回
true。

``python
>;>cli.单击"打开"("//button[0)"
`true
````

树:`/class`
-选择具有属性的小部件`/class[<;attr selector>;,…]`
-如果存在多个匹配项,则索引选择器:`/class[index]`
-属性存在:`@attr`
-属性等于一个值:`@attr=value`
-a属性不等于值:`@attr!=值`
-属性包含值:`@attr~=值`
-属性不包含值:`@attr!~=value`
-value可以是一个字符串,但只能在双引号内转义。

一些示例:

``
选择应用程序中的所有boxlayout
//boxLayout[0]/按钮

n输入"close"
//boxlayout[0]//button[@text~="close"]
````

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

推荐PyPI第三方库


热门话题
javascript生成两点之间的固定纬度和经度   java为什么不删除并重命名文件?   求数组的和   java在漂亮面孔中使用正则表达式   SOAP(java)中的Hello World。如何修复它?   java I获取应用程序生成错误,配置为“”的资源“attr/arc_position”的值重复   云基础环境中的Java SFTP客户端应用   谷歌应用程序引擎Java查询日期不正常?   java使用cancel按钮对JOptionPane InputDialog循环进行转义   java数字格式总是返回异常   xquery Java Saxon API以“追加”模式写入文件   java Azure函数在第二个插槽中没有响应   java在构建Play应用程序后向其添加动态依赖项   json如何使用Jackson mapper for java。木卫一。可序列化类型字段?