2015-01-04 5 views
0

Я ищу способ в Selendroid, чтобы получить текущее представление дампа приложения, работающего на реальном устройстве. Теперь я знаю, что вы можете получить весь источник страницы сisClickable с 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 можно использовать isClickable в представлении, чтобы проверить, есть ли зарегистрированный для него прослушиватель кликов.

Можно ли получить атрибут isClickable элемента с Selendroid? Alternativel есть ли другой способ получить текущий дамп представления приложения с Selendroid, который даст мне значение атрибута isClickable элемента?

Последнее, что я работаю, является общим тестом для приложений, из которых у меня нет исходного кода. Из-за этого я не могу определить элементы представления перед выполнением. Это должно произойти динамически.

ответ

0

Для проверки вручную вы должны использовать инструмент, например, uiautomatorviewer [находится в папке инструментов SDK]. Selendroid не предлагает функциональность как "isClickable", но вы можете chceck "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 */)); 

И да .. его действительно трудно найти правильный способ сделать это.