Calabash Android касается определенной части строки

У меня есть текстовое представление с сообщением, скажем, «Можно щелкнуть только эту часть сообщения», где «эта часть» имеет прикрепленный к ней clickableSpan. Есть ли способ, которым я могу коснуться только той части сообщения, которая имеет кликабельный диапазон, чтобы проверить следующие сценарии.

Текстовое представление выглядит так:

[{"id"=>"message",
"enabled"=>true,
"contentDescription"=>nil,
"class"=>"com.xyz.mobile.android.view.WhitneyBookTextView",
"text"=>
 "Only this portion of the message can be clicked.",
"rect"=>{"center_y"=>934.5, "center_x"=>381.0, "height"=>67, "y"=>901, "width"=>598,"x"=>82},
"description"=>
 "com.xyz.mobile.android.view.WhitneyBookTextView{231r6178 VFED..CL ........ 42,0-640,67 #6f094a app:id/message}"}]

Есть ли способ, которым это можно щелкнуть?

touch(query("* id:'message'")) не работает.


person Infant Dev    schedule 17.09.2014    source источник
comment
Вы пробовали что-то вроде: tap_mark this part. Я не проверял ваш пример, так что это просто предложение.   -  person Lasse    schedule 17.09.2014


Ответы (3)


Возможно, вы могли бы использовать функцию смещения, предполагая, что она все еще работает. На калебасе для iOS можно сделать

touch("вид помечен: 'Первый'", :offset => {:x => 50, :y => 0})

Это найдет центр представления с пометкой «Первый», а затем коснется 50 пикселей справа от него.

Поможет ли это вам, даже если это уродливо и жестко запрограммировано...

person Lasse    schedule 17.09.2014
comment
Я хотел для андроида. не иос. - person Infant Dev; 18.09.2014
comment
Да, но вы пробовали его использовать? многие команды работают на обеих платформах. - person Lasse; 18.09.2014

Вы можете попробовать touch(query("WhitneyBookTextView {text LIKE[c] '*this portion*'}")).

Если это не работает, например. нажатие по-прежнему происходит в другом месте, вы можете попробовать добавить смещение, как предложил Lasse.

person Noffica    schedule 08.01.2015

Это простая проблема. Вы можете выбрать конкретный элемент на основе его «идентификатора» или «текста». Если идентификатор: сообщение больше нигде не используется, тогда

touch("* id:'message'")

or

touch("android.view.WhitneyBookTextView id:'message'")

должно сработать.

person sanoop sandy    schedule 09.09.2015