【问题标题】:isClickable with SelendroidisClickable 与 Selendroid
【发布时间】:2015-01-05 07:29:38
【问题描述】:

我正在 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 属性值?

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

【问题讨论】:

    标签: java android selendroid


    【解决方案1】:

    您应该使用像 uiautomatorviewer [位于 SDK 工具文件夹中] 之类的工具来手动检查过程。 Selendroid 不提供“isClickable”之类的功能,但您可以检查“isEnabled”或只是:

    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 */));
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 2015-07-15
      • 1970-01-01
      相关资源
      最近更新 更多