我正在 Selendroid 中寻找一种方法来获取在真实设备上运行的应用程序的当前视图转储。现在我知道,您可以通过以下方式获取整个页面源代码
driver.getPageSource()
也就是我目前使用的。此方法为我提供了所有可见视图元素的 XML 格式层次结构,可以使用 XPath 进行解析。输出如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<views>
<DecorView name="" label="" value="" ref="97bc5edf-6001-0c8a-3550-92822dfe3d55" id="" shown="true">
<rect x="0" y="0" height="1920" width="1080" />
<LinearLayout name="" label="" value="" ref="da84259b-f404-d100-7eb6-ed006469d60e" id="" shown="true">
<rect x="0" y="0" height="1920" width="1080" />
<ViewStub name="" label="" value="" ref="beb2dd1c-4a0e-25ef-26ff-30fa1eb628d0" id="action_mode_bar_stub" shown="false">
<rect x="0" y="0" height="0" width="0" />
</ViewStub>
(...)
不幸的是,我只需要可以单击的元素。在 Android SDK 中,可以在 View 上使用 isClickable 来检查是否有为其注册的点击监听器。
是否可以使用 Selendroid 访问元素的 isClickable 属性?Alternativel 是否有任何其他方法可以使用 Selendroid 获取应用程序的当前视图转储,这将为我提供元素的 isClickable 属性值?
最后一件事:我正在做的是对应用程序的通用测试,我没有源代码。因此,我无法在运行前定义视图元素。这必须动态发生。