为什么我在将其子类化时无法看到AppiumLibrary的方法?

时间:2016-02-11 16:20:16

标签: python appium robotframework python-appium

this StackOverflow posting中,Bryan Oakley建议对AppiumLibrary进行子类化并举例说明这样做。我正试图这样做,我似乎无法让它工作。例如:

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:20:15)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.

>>> from AppiumLibrary import AppiumLibrary
>>> class foo(AppiumLibrary):
…     pass
…
>>> f = foo()
>>> print f
<__main__.foo object at 0x102097bd0>
>>> print f.__dict__

{‘_running_on_failure_routine’: False, ‘_screenshot_index’: 0, ‘_run_on_failure_keyword’: ‘Capture Page Screenshot’, ‘_element_finder’: <AppiumLibrary.locators.elementfinder.ElementFinder object at 0x1036f7e50>, ‘_timeout_in_secs’: 5.0, ‘_bi’: <robot.libraries.BuiltIn.BuiltIn object at 0x1036f7d50>, ‘_cache’: <AppiumLibrary.utils.applicationcache.ApplicationCache object at 0x1036f7d90>}

>>> f.OpenApplication()
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
AttributeError: ‘foo’ object has no attribute ‘OpenApplication’

为什么这对Bryan和AronS有效而对我来说不适用?

谢谢, 马丁

1 个答案:

答案 0 :(得分:0)

男孩我觉得自己很蠢!一旦我重新准备好自己发布的问题,我就知道了答案。 Robot Framework关键字是“Open Application”,但AppiumLibrary中的内部关键字方法是“open_application”。子类化时,你必须通过实际的方法名称调用,而不是通过RobotFramework的“友好”关键字名称调用!

我还不清楚为什么 dict 没有列出关键字方法名称,但也许我对Python中的某些内容感到愚蠢,我也应该知道这一点。