0

我正在嘗試使用Culbera測試下拉列表。我的菜單結構如下Culbera:從Android應用中的下拉列表中選擇東西

Main Page 
    -- Program - Setup - Arm  
         - Torque 
    -- Test 

現在Arm顯示(使可見)一個下拉列表,顯示ARM類型的列表。

我想從下拉列表中選擇一個,然後按Program Arm Type。出於某種原因,這不能按預期工作。

當我用

python culebra -Gu -o command_trace.txt --scale=01.0 

我得到的痕跡

vc.findViewWithTextOrRaise(u'Arm').touch() 
vc.sleep(_s) 
vc.dump(window=-1) 
vc.findViewByIdOrRaise("id/no_id/21").setText(u"xxx") 
vc.sleep(_s) 
vc.dump(window=-1) 
vc.findViewWithTextOrRaise(u'OK').touch() 
vc.sleep(_s) 
vc.dump(window=-1) 
vc.findViewWithTextOrRaise(u'Program ArmType').touch() 
vc.sleep(_s) 
vc.dump(window=-1) 

它彈出的文本框中。 (我不知道它來自哪裏)?有人能解釋如何在Culbera

import re 
import sys 
import os 
import time 


from com.dtmilano.android.viewclient import ViewClient 
from com.dtmilano.android.adb.adbclient import DOWN_AND_UP 

kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False} 
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1) 
kwargs2 = {'forceviewserveruse': False, 'useuiautomatorhelper': False, 'ignoreuiautomatorkilled': True, 'autodump': False, 'startviewserver': True, 'compresseddump': True} 

_s = 3 
_v = '--verbose' in sys.argv 


vc = ViewClient(device, serialno, **kwargs2) 

# Installs the Android package. Notice that this method returns a boolean, so you can test 
# to see if the installation worked. 
#vc.installPackage('AbcApp.Android.AbcApp.Android-Signed.apk') 


# sets a variable with the package's internal name 
package = 'AbcApp.Android.AbcApp.Android' 

# sets a variable with the name of an Activity in the packag 
activity = 'md591ecfcc0189ae8714.MainActivity' 

# sets the name of the component to start 
runComponent = package + '/' + activity 

# Runs the component 
device.startActivity(component=runComponent) 

vc.sleep(5) 

def GoToView(s): 
    vc.findViewWithTextOrRaise(unicode(s)).touch() 
    vc.sleep(_s) 
    vc.dump(window=-1) 

vc.dump(window=-1) 

GoToView('Program') 

GoToView('Setup') 
vc.findViewWithTextOrRaise(u'Arm').touch() 
vc.sleep(_s) 
vc.dump(window=-1) 

vc.findViewWithTextOrRaise(u'OK').touch() 
vc.sleep(_s) 
vc.dump(window=-1) 
vc.findViewWithTextOrRaise(u'Program ArmType').touch() 
vc.sleep(_s) 
vc.dump(window=-1) 


GoToView('Main') 
+0

@DiegoTorresMilano - 你可以看看這個嗎?謝謝 – liv2hak

+0

我不明白你的意思,「它彈出一個文本框(我不知道它來自哪裏)?」 –

+1

你可以添加截圖嗎? –

回答

1

選擇器

選擇從下拉列表中的事物之間的選擇器是其他部件如按鈕和EditText上的組成部件。

這個簡單的例子顯示了TimePicker

enter image description here

那麼,如果你運行

dump 

這是輸出

android.widget.TimePicker com.dtmilano.android.demoapplication:id/timePicker 
    android.widget.NumberPicker 
     android.widget.Button 2 
     android.widget.EditText android:id/numberpicker_input 3 
     android.widget.Button 4 
    android.widget.NumberPicker 
     android.widget.Button 33 
     android.widget.EditText android:id/numberpicker_input 34 
     android.widget.Button 35 
    android.widget.NumberPicker 
     android.widget.EditText android:id/numberpicker_input AM 
     android.widget.Button PM 

在這裏你可以看到的部分我的意思是 由組成

然後,當你點擊一些的EditText S的,culebra明白你的意圖是要輸入一些文字,因此它顯示輸入對話框

enter image description here

如果你點擊任何的按鈕 s,culebra也會理解你的意圖是增加或減少Picker值併產生相應的觸摸。

我不確定是什麼是你提到的。他們是Spinner s? dump的輸出將有助於理解。因爲它是由條目和下拉菜單的

微調

微調的情況有點不同。

不過,如果你看看觸摸區(CTRL + Z),你會看到該條目,下拉箭頭是

enter image description here

我使用相同的區域的一部分ApiDemos這裏所以如果你想測試它或提出新的問題,我們將有一些比較。

然後,你就微調點擊打開下拉

enter image description here

,你會得到這個代碼生成

vc.dump(window=-1) 
vc.findViewWithTextOrRaise(u'green', root=vc.findViewByIdOrRaise('id/no_id/4')).touch() 
vc.sleep(_s) 
vc.dump(window=-1) 
vc.findViewWithTextOrRaise(u'violet').touch() 

第一touch()可能是,如果麻煩一點您不知道當前值,那麼您可以使用視圖ID或正則表達式來匹配所有選項。

+0

通過'dropdowns'我的意思是選擇器,可以讓你在'SBO1','SBO2'和'SBO3'之間選擇 – liv2hak

+0

還沒有想出如何從可綁定選取器中選取特定項目。您能否在上述情況下提供示例腳本? – liv2hak

+0

在這種情況下,生成的腳本可以完美地輸入您鍵入的文本或單擊按鈕以增大/減小值。這應該和你的SB01,SB02 ...一樣。 –