espresso Seekbar
package test.utils; import android.support.test.espresso.PerformException;
import android.support.test.espresso.ViewAction;
import android.support.test.espresso.action.CoordinatesProvider;
import android.support.test.espresso.action.GeneralSwipeAction;
import android.support.test.espresso.action.Press;
import android.support.test.espresso.action.Swipe;
import android.support.test.espresso.util.HumanReadables;
import android.view.View;
import android.widget.SeekBar; import static android.support.test.espresso.action.ViewActions.actionWithAssertions; /**
* Created by qiantao on 17-10-19.
*/ public class SeekBarActions {
public static ViewAction scrubSeekBarAction(int progress) {
return actionWithAssertions(new GeneralSwipeAction(
Swipe.SLOW,
new SeekBarThumbCoordinatesProvider(-1),
new SeekBarThumbCoordinatesProvider(progress),
Press.PINPOINT));
} /**
* -1 表示起始位置
*/
private static class SeekBarThumbCoordinatesProvider implements CoordinatesProvider {
int mProgress; public SeekBarThumbCoordinatesProvider(int progress) {
mProgress = progress;
} private static float[] getVisibleLeftTop(View view) {
final int[] xy = new int[2];
view.getLocationOnScreen(xy);
return new float[]{(float) xy[0], (float) xy[1]};
} @Override
public float[] calculateCoordinates(View view) {
if (!(view instanceof SeekBar)) {
throw new PerformException.Builder()
.withViewDescription(HumanReadables.describe(view))
.withCause(new RuntimeException(String.format("SeekBar expected"))).build();
}
SeekBar seekBar = (SeekBar) view;
int width = seekBar.getWidth() - seekBar.getPaddingLeft() - seekBar.getPaddingRight();
LogUtils.i("seekBar.getProgress():" + seekBar.getProgress());
double progress = mProgress == -1 ? seekBar.getProgress() : (mProgress * seekBar.getMax() / 100);
int xPosition = (int) (seekBar.getPaddingLeft() + (width * progress / seekBar.getMax()));
float[] xy = getVisibleLeftTop(seekBar);
return new float[]{xy[0] + xPosition, xy[1]};
}
}
}
检查Mtacher
public static Matcher<View> withSeekBarProgress(final int expectedProgress) {
return new BoundedMatcher<View, SeekBar>(SeekBar.class) {
@Override
public void describeTo(Description description) {
description.appendText("expected: ");
description.appendText("" + expectedProgress);
} @Override
public boolean matchesSafely(SeekBar seekBar) {
LogUtils.i("seekBar.getProgress():" + seekBar.getProgress());
return seekBar.getProgress()*100/seekBar.getMax() == expectedProgress;
}
};
}
用法
for (int i = 0; i <= 100; i += 50) {
onView(seekBarViewMatcher).perform(SeekBarActions.scrubSeekBarAction(i));
onView(seekBarViewMatcher).check(matches(withSeekBarProgress(i)));
}
espresso Seekbar的更多相关文章
- 安卓SeekBar
public class Speak extends Fragment implements OnSeekBarChangeListener { private SeekBar bar1; priva ...
- SeekBar进度条简单案例
SeekBar是进度条.我们使用进度条时,可以使用系统默认的进度条:也可以自定义进度条的图片和滑块图片等 向右拉进度条让图片显示出来 向右拉五角星加载有色进度条 baseSeekBar package ...
- 【Android测试】【第十九节】Espresso——API详解
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5997557.html 前言 Espresso的提供了不少A ...
- 安卓自动化测试:Android studio 自带的 Record Espresso Test || [ Appium & (Android studio || Python|| Eclipse ) ]
1.Android studio 自带的 Record Espresso Test https://developer.android.com/studio/test/espresso-test-r ...
- 通过seekBar改变图片的透明度
作者:堕落的天使 对应的图片 activity_main.xml(代码) <RelativeLayout xmlns:android="http://schemas.android.c ...
- SeekBar 圆角问题
用图片做背景色,最后处理成.9.png的.用普通png图片做背景,则两边会有圆角出现,原因是图片不适合SeekBar尺寸,因而被拉伸或压缩,从而产生圆角. <?xml version=" ...
- Android之SeekBar定制
1.SeekBar样式定制 xml文件中: <SeekBar android:id="@+id/seekbar_voice" ...
- 自定义SeekBar的使用
一.seekbar是进度条,可以使用系统的,也可以自己定义,下面我们将自己定义一个seekbar. 1.自定义滑条,包括对背景,第一进度,第二进度的设置,通过一个xml来实现,在drawable下创建 ...
- listview+seekbar问题的解决
最近做了个项目,其中有录音播放功能.每次录音结束都会在listView中显示,在listView中能播放每次的录音,也可以每条录音之间的切换播放.随之就引发了许多的问题,比如当我播放第一条录音的时所有 ...
随机推荐
- webpack + less
使用less需要安装 'style-loader','css-loader','less-loader' 三个loader. 安装之后在webpack.config.js配置 const path = ...
- Nginx和Squid配合搭建的Web服务器前端系统
这个架构是目前我个人觉得比较稳妥并且最方便的架构,易于多数人接受: 前端的lvs和squid,按照安装方法,把epoll打开,配置文件照搬,基本上问题不多. 这个架构和app_squid架构的区别,也 ...
- [luogu4242] 树上的毒瘤
题目描述 这棵树上有n个节点,由n−1条树枝相连.初始时树上都挂了一个毒瘤,颜色为ci.接下来Salamander将会进行q个操作. Salamander有时会修改树上某个点到另外一个点的简单路径上所 ...
- POJ 2074 | 线段相交
#include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #defi ...
- POJ 2186 受欢迎的牛 Tarjan基础题
#include<cstdio> #include<algorithm> #include<cstring> #include<vector> #inc ...
- bzoj4386 Wycieczki
题目描述 给定一张n个点m条边的带权有向图,每条边的边权只可能是1,2,3中的一种.将所有可能的路径按路径长度排序,请输出第k小的路径的长度,注意路径不一定是简单路径,即可以重复走同一个点. 输入 第 ...
- CSS实现放大镜/狙击镜效果
图片放大,这是一个比较容易的效果了.当然,今天说的可不是简简单单的在一个框里放大,而是一个圆.就像放大镜或是狙击镜那样,只有圆圈里的放大,圈外的当然还是原来的图片.这是不是很不可思议? 当然不是.做过 ...
- svn merge详解
svn merge详解 [OK] http://blog.163.com/lgh_2002/blog/static/4401752620106202710487/ Subversion的分支通常用于在 ...
- 【CF1023D】Array Restoration(构造,线段树)
题意:有一个长为n的序列,对其进行q次操作,第i次操作可以把连续的一段覆盖为i 现在给出操作后的序列,第i个数字为a[i],其中有一些为0的位置可以为任意值,要求构造任意一组合法的操作后的序列 无解输 ...
- 【Tomcat】一台电脑上运行多个tomcat
效果: 1.首先需要安装Tomcat7,Tomcat8. Tomcat7: Tomcat8: 2.添加两个环境变量,添加CATALINA_HOME1和CATALINA_BASE1指向E:\tomcat ...