我正在尝试使用Appium测试我公司的移动应用程序。我希望使用Python绑定来编写脚本,我需要从Android应用程序开始。在
我把Appium的例子都用上了。我可以运行grunt android
并且测试正常,我可以运行android.py
示例应用程序。在
但我是个新手,我不清楚如何识别公司应用程序中的控件。我对Python很有经验,所以我想我应该构建一个控制元素的列表并对它们进行反思。在
我卡住了!所有像driver.find_elements_by_tag_name()
这样的方法都需要一个特定的标识符(或者至少我还没有找到任何有效的通配符)。在
我如何反省代表测试中的Android应用程序的Appium元素树?我怎样才能列举出所有的元素以便我能够反省它们?有没有树可以让我在应用程序中找到所有元素?在
我希望我可以在不需要获取应用程序的源代码、在Eclipse中构建应用程序等的情况下就可以找到这些元素,但如果需要,我可以这样做。在
另外,我更喜欢使用Python,但是如果它能更好地工作,我愿意使用其他东西来进行自省。我仍然可以用Python编写实际的测试,除非另一种语言以某种方式好得多。在
我仍然希望有一种方法来反思Python中的Selenium接口。但是我已经找到了一种可行的方法来清晰地了解应用程序的布局,并且很容易找到如何编写Selenium测试的方法。在
首先,让你的应用程序运行,无论是在连接到你的Android开发计算机的真实设备上,还是在模拟器中。基本上,如果你运行
adb devices
,你希望看到一个设备,运行你的应用程序的设备。接下来,运行uiautomatorviewer
工具,然后单击Device Screenshot
工具栏图标。(只有两个工具栏图标:第一个是Open
图标,看起来像一个文件夹,而你想要的那个看起来像一堆移动电话。)一旦你这样做了,你的应用程序的图像就会出现,左边是截图,右边是可浏览的树轮廓。大纲显示了应用程序的所有控件,以及它们的文本标签(如果有的话),以及其他信息(例如该控件的})。在
clickable
属性是true
还是{一个警告:控件显示为编号,但在Selenium绑定中,编号可能不相同。在
ApiDemos
示例应用程序中,Graphics
按钮的索引号为4,因为它是第五个按钮,但要按其位置访问它,我必须使用索引5。索引0是一个不可单击的对象,它保存着文本“API Demos”,位于另一个组成屏幕标题的FrameLayout
对象中。在因此,我可以对
android.py
脚本进行以下更改:注释掉
driver.find_element_by_name()
调用,而是在整个应用程序中找到第六个TextView
。这不是最佳实践,但它表明uiautomationviewer
结果确实让我能够查看我需要了解的控件。在现在我有足够的知识来反省一下:
^{pr2}$这并不比仅仅打电话给
driver.find_element_by_name()
好,但它表明我的思路是正确的。在uiautomatorviewer
是我问题的一个实际解决方案。如果你有一个纯Python请让我知道。在Appium支持WebDriver的“页面源”方法。所以你可以这样做:
相关问题 更多 >
编程相关推荐