Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么可以';当我对应用程序库进行子类化时,我看不到它的方法吗?_Python_Appium_Robotframework_Python Appium - Fatal编程技术网

Python 为什么可以';当我对应用程序库进行子类化时,我看不到它的方法吗?

Python 为什么可以';当我对应用程序库进行子类化时,我看不到它的方法吗?,python,appium,robotframework,python-appium,Python,Appium,Robotframework,Python Appium,在本文中,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”, “

在本文中,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’
ActivePython 2.7.2.5(ActiveState软件公司)基于
Python 2.7.2(默认值,2011年6月24日,12:20:15)
[GCC 4.2.1(苹果公司构建5664)]关于达尔文
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从AppiumLibrary导入AppiumLibrary
>>>foo类(应用程序库):
…通过
…
>>>f=foo()
>>>打印f
>>>打印口述__
{“在失败时运行”例程:False,“屏幕截图”索引:0,“在失败时运行”关键字“:“捕获页面屏幕截图”,“元素查找器”,“超时时间”:5.0”,“bi:,“缓存”:
>>>f.OpenApplication()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“foo”对象没有属性“OpenApplication”
为什么这对Bryan和AronS有用,而不是现在对我

谢谢,
马丁

天哪,我真觉得自己很蠢!当我准备好我自己发布的问题,我知道答案。Robot Framework关键字为“Open Application”,但AppiumLibrary中的内部关键字方法为“Open_Application”。当子类化时,您必须按实际的方法名调用,而不是RobotFramework的“友好”关键字名


我仍然不清楚为什么dict没有列出关键字方法名称,但也许我对Python中一些我不需要问就应该知道的东西很傻。

\uuuu dict\uu
用于属性。我想你要做的是
dir(f)
。这将显示所有的方法和属性。要尝试只查看公共方法-
[x代表dir(f)中的x,如果inspect.ismethod(getattr(f,x))和x[0]!='''.]
。当然,这一切都有例外。