2015-06-02 95 views
1

我正在为android应用程序编写自动化。如何知道点击或不点击的按钮

要编写自动化代码,我检查使用uiautomatorviewer(Android SDK工具)

我要查看在华氏和摄氏天气的应用程序。

有一个按钮开关天气单位。

开关气象单位后,我怎么能知道我在华氏或摄氏

这里是连接

  1. 天气单位enter image description here

  2. 华氏enter image description here

  3. 截屏摄氏温度enter image description here

仅供参考我不是开发人员更改移动应用程序代码。我正在为移动应用程序编写自动化测试。有没有什么办法使用java自动化使用http://appium.io/

+0

使用布尔值为textview点击或我建议你应该使用切换按钮,而不是textviews。 –

+0

为什么不使用开关或切换代替textview? – AAnkit

回答

0

使用一个开关,

<Switch 
    android:id="@+id/mySwitch" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOn="deg celcius" 
    android:textOff="deg fah"/> 

你已经上=开关度摄氏度,并关闭=度华氏温度,因此使用setOnCheckedChangeListener

Switch switchStatus = (TextView) findViewById(R.id.switchStatus); 
mySwitch = (Switch) findViewById(R.id.mySwitch); 
mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, 
    boolean isChecked) { 

     if(isChecked){ // deg celcius 
      // Do operation 
     }else{ // deg fahrenheit 
      // Do operation 
     }  
    } 
}); 
+0

我已更新问题。请看看它。 – karan

0

你的说明,它看起来像你需要一个切换按钮Toggle Button Developer Link

如果按钮被选中或不你可以得到:

boolean on = ((ToggleButton) view).isChecked(); 

一旦你切换按钮,在你的布局简单设置:

此按钮的
android:textOn="@string/Fahrenheit" 
android:textOff="@string/Celsius" 

OnClickListener执行你们各自的逻辑。这应该足以让你去。

+0

我已更新问题。请看看它。 – karan

0

试试这个:

YourSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, 
    boolean isChecked) { 
    if(isChecked){ 
    switchStatus.setText("Switch is currently ON"); 
    }else{ 
    switchStatus.setText("Switch is currently OFF"); 
    } 
    } 
    }); 
+0

我已更新问题。请看看它。 – karan

0

我建议你去交换,但仍,如果你想要去的话,那么你将不得不自己来管理状态(启用/禁用)都textviews的。

TextView fehreniteTextview, celsiusTextView; 
fehreniteTextview=(TextView)findViewById(R.id.fehrenite); 
celsiusTextView=(TextView)findViewById(R.id.celsius); 

所以在这里,的onClick你将不得不改变另一个TextView的状态太像:

public void onClickOfFahrenite(View v){ 
    celsiusTextView.setEnabled(true); 
    fehreniteTextview.setEnabled(false); 
} 

public void onClickOfCelsius(View v){ 
    celsiusTextView.setEnabled(false); 
    fehreniteTextview.setEnabled(true); 
} 

现在作出任何决定之前,你必须检查,其中一个TextView的启用,使用:

if(fehreniteTextview.isEnabled()) 
{ 
// Do your stuff 
} 
else 
{ 
// Do your stuff 
} 

我希望它可以帮助你!

0

从看到截图后,textview的背景颜色从灰色变为蓝色。因此,如果您获得了textview的背景颜色,您将可能知道哪个开关处于开启状态。 你可以看看https://groups.google.com/forum/#!topic/appium-discuss/buToEAIDn2c

+0

我如何使用appium为应用程序获取背景色。请参阅https://github.com/appium/appium/issues/1920 – karan

0

这里的每个答案都来自Android开发人员而不是Android测试人员,但没有人回答您的问题(他们似乎没有阅读过您不能更改应用程序本身)。

应用程序完成的方式,你不能这样做。 UiAutomator不会读取颜色或类似的东西。因此,如果这些元素的属性(除了文本和边界)没有差异,它就无法知道选择的手段。

如果应用程序正确完成,它将是一个ToogleButton,然后属性(选中或选择,我确定是哪个)将指示选中哪个。

相关问题