Java 可与Selendroid互舔

Java 可与Selendroid互舔,java,android,selendroid,Java,Android,Selendroid,我正在寻找一种在Selendroid中获取在真实设备上运行的应用程序的当前视图转储的方法。现在我知道了,你可以用 driver.getPageSource() 也就是我目前正在使用的。这个方法为我提供了一个XML格式的所有可见视图元素的层次结构,可以用XPath解析。输出如下所示: <?xml version="1.0" encoding="UTF-8"?> <views> <DecorView name="" label="" value="" ref="

我正在寻找一种在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>
    (...)

(...)
不幸的是,我只需要可以单击的元素。在androidsdk中,可以在视图上使用isClickable来检查是否有为其注册的click侦听器

是否可以使用Selendroid访问元素的isClickable属性?Alternative是否有其他方法可以获取带有Selendroid的应用程序的当前视图转储,这将为我提供元素的isClickable属性值


最后一件事:我正在做的是一个应用程序的通用测试,我没有源代码。因此,我无法在运行前定义视图元素。这必须动态进行。

您应该使用uiautomatorviewer之类的工具[位于SDK工具文件夹中]来手动检查流程。Selendroid不提供“可点击”功能,但您可以选择“可点击”或:

WebElement element = driver.findElement(/* ... */);
try{
element.click();
}catch(SelendroidException ex){
/* your listener for output */
}
或者

是的。。真的很难找到合适的方法来做到这一点

element = WebDriverWait(driver, 10).until(
ExpectedConditions.elementToBeClickable(/* way to identity element */));