0

我正在嘗試使用calabash-android測試來觸摸我的應用中的溢出按鈕。經過這麼多的研究,我發現了一種觸摸溢出按鈕的方法。如何觸摸calabash-android中的溢出按鈕?

tap_when_element_exists("android.support.v7.widget.ActionMenuView") 

這對我工作時,只有一個溢出按鈕在屏幕上,沒有其他按鈕。但對於下面的圖片,其中溢出按鈕和其他按鈕上面的方法不能正常工作。我試過索引也

tap_when_element_exists("android.support.v7.widget.ActionMenuView index:0"), 
tap_when_element_exists("android.support.v7.widget.ActionMenuView index:1") 

等,但仍然沒有解決。

然後我用此方法 -

select_options_menu_item("* id:'action_change_notification'") 

但是當我使用這種方法,溢流按鈕被調用,但在不能觸摸的項目它

enter image description here

回答

0

我找到了一個更好的解決方案。它完美的工作。

這可能會給你屏幕上的溢出菜單按鈕。

query("android.support.v7.widget.ActionMenuPresenter$OverflowMenuButton") 

tap_when_element_exists("android.support.v7.widget.ActionMenuPresenter$OverflowMenuButton") 
1

嘗試使用query("android.support.v7.widget.ActionMenuView")和看你得到多少元素,然後找出你需要的元素,可能是'id''content-description',這應該是唯一的。

您可以嘗試使用Android SDK中的uiautomator。這是識別元素並查看層次結構的非常有用的工具。

通常位於您的sdk文件夾下的\tools\bin。你會看到這樣的事情:

enter image description here

現在你可以去通過ListView控件的孩子,以便訪問所需要的,是這樣的(上圖作爲例子):

query("android.widget.ListView android.widget.LinearLayout id:'title'")

讓我知道它是否有效,可能有其他方法。

+0

我很感謝你幫助我,我還沒有測試過它是否有效。很快我會檢查並讓你知道。 –