appium结合sikuli的简单实践
来源:互联网 发布:农业资源与环境知乎 编辑:程序博客网 时间:2024/06/08 07:15
测试场景:打开myreaciton.apk,点击skip login按钮,点击“crazy fingers”菜单,选择left_hand及index_finger,开始模拟支付宝咻一咻类似的点击(10s倒计时),最后断言点击数。
1、首先建一个CapabilitiesFactory类用来定义所测的app(MyReaction.apk)
package com.wiley.driver;import org.openqa.selenium.remote.DesiredCapabilities;public class CapabilitiesFactory { protected static DesiredCapabilities capabilities; public static DesiredCapabilities getCapabilities() throws Exception { capabilities = new DesiredCapabilities(); capabilities.setCapability("platformName", "android"); capabilities.setCapability("deviceName", "samsung"); //以下两项可以通过appium客户端查看 capabilities.setCapability("appPackage", "com.denyszaiats.myreactions");capabilities.setCapability("appActivity", ".StartActivity");//支持中文输入capabilities.setCapability("unicodeKeyboard", "True");//重置输入法为系统默认capabilities.setCapability("resetKeyboard", "True");//安装时不对apk进行重签名,设置很有必要,否则有的apk在重签名之后无法正常使用capabilities.setCapability("noSign", "True"); return capabilities; }}2、其次,建一个SikuppiumDriver类,继承AppiumDriver
package com.wiley.driver;import java.net.URL;import org.openqa.selenium.Capabilities;import io.appium.java_client.AppiumDriver;import io.appium.java_client.MobileElement;public class SikuppiumDriver extends AppiumDriver { private AppiumDriver driver; public SikuppiumDriver(URL remoteAddress, Capabilities desiredCapabilities) { super(remoteAddress, desiredCapabilities); } public void setDriver(AppiumDriver driver) { this.driver = driver; } @Override public MobileElement scrollTo(String s) { return null; } @Override public MobileElement scrollToExact(String s) { return null; }}
3、测试
(1)为了方便,我们可以先建一个测试基类,如:BaseTest类
package com.wiley.tests;import java.net.URL;import java.util.concurrent.TimeUnit;import org.testng.annotations.AfterMethod;import org.testng.annotations.BeforeMethod;import com.wiley.driver.CapabilitiesFactory;import com.wiley.driver.SikuppiumDriver;public class BaseTest { protected SikuppiumDriver driver; @BeforeMethod public void setUp() throws Exception { driver = new SikuppiumDriver( new URL("http://0.0.0.0:4723/wd/hub"), CapabilitiesFactory.getCapabilities() ); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.setDriver(driver); } @AfterMethod public void tearDown() { if (driver != null) { driver.quit(); } }}
(2)在正式编写代码之前,我们应该知道app元素的简单定位,可以通过sdk自带的uiautomatorviewer.bat,如下图:
比如:我们要定位Skip login这个按钮,可以通过以下方法:(1)driver.findElementById("com.denyszaiats.myreactions:id/skip_login_button");(2)driver.findElementByName("Skip login");(3)driver.findElementByXpath("//android.widget.Button[1]");更深层次的WebElement元素的操作方法,具体查看selenium webdriver2的api,此文不做具体介绍;
(3)编写测试代码,代码中有关sikuli的方法可具体查看我博客中的相关文章
package com.wiley.tests;import static org.testng.Assert.assertEquals;import org.sikuli.script.FindFailed;import org.sikuli.script.Screen;import org.testng.annotations.Test;public class SampleTest extends BaseTest{ private static final String BaseId = "com.denyszaiats.myreactions:id/"; private Screen screen = new Screen(); @Test public void testSampleScenarioOfClicking() throws InterruptedException, FindFailed { driver.findElementById(BaseId + "skip_login_button").click(); driver.findElementByName("Crazy Fingers").click(); driver.findElementById(BaseId + "handButton").click(); screen.click("left_hand.png"); driver.findElementById(BaseId + "fingerButton").click(); screen.click("index_finger.png"); driver.findElementById(BaseId + "startButton").click(); for (int i = 0; i < 3; i ++) { driver.findElementById(BaseId + "imageTapButton").click(); } String result = driver.findElementById(BaseId + "resultsFasterClicker").getText(); assertEquals(result, "3"); }}
效果:
完整代码链接地址:http://pan.baidu.com/s/1jIizU78
0 0
- appium结合sikuli的简单实践
- Sikuli和Robot framework的结合
- selenium结合最新版的sikuli使用
- Sikuli 结合selenium的一些使用
- Sikuli-X简单的使用
- selenium结合sikuli实现百度的图片搜索功能
- UIAutomatorview 简单封装 与 Appium Boostrap 结合
- Appium的简单实用
- selenium结合Sikuli-Script使用
- selenium一个具体页面的实现(结合autoit3和sikuli)
- sikuli
- Sikuli
- appium(二)简单的demo
- RF +Appium的简单教程及实例
- Robot Framework +Appium的简单教程
- Appium实践(一)
- Appium使用实践
- appium 常用api实践
- 图片加载问题
- 001安卓AIDL学习记录
- 笔试题40. LeetCode OJ (27)
- Java集合---ConcurrentHashMap原理分析
- 在手指按下的位置弹出PopWindow
- appium结合sikuli的简单实践
- 切勿用普通for循环遍历LinkedList
- 双击检测
- Looper & Handler
- ButterKnife 使用教程
- Tyvj_P1017
- 解决cvs commit: cannot commit with sticky date for file xxx
- Lightoj 1019 - Brush (V)【dijkstra+spfa】
- 自定义导航的返回按钮 导致右滑返回失效的解决