appium java 时间控件_appium 处理动态控件

最近有人问我appium能否处理动态生成的控件,由于以没做过,不敢肯定,所以就自己谢了一个测试Demo

由于自己不小心appiumDemo打错写为apppiumDemo

第一步: 创建Android project 在onCreate方法里添加一个button控件

1 Button bt = new Button(this);2 bt.setText("Test");3 bt.setPadding(300, 0, 0, 0);4

5 RelativeLayout relativeLayout =(RelativeLayout) getLayoutInflater()6 .inflate(R.layout.activity_main, null);7 RelativeLayout.LayoutParams layoutParams = newRelativeLayout.LayoutParams(8 ViewGroup.LayoutParams.MATCH_PARENT,9 ViewGroup.LayoutParams.WRAP_CONTENT);10 layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, -1);11 relativeLayout.addView(bt, layoutParams);12 setContentView(relativeLayout);

第二步:使用uiautomatorviewer获取控件

其实动态生成的控件和使用xml的一样,只不过没有添加resource-id

第三部: 获取控件

a.使用 findByClassName

driver.findElementByClassName("android.widget.Button");

b.使用xpath

driver.findElementByXPath("//android.widget.Button");

第三部:使用appium验证

1 packagecom.dbyl.core;2

3 importorg.openqa.selenium.remote.CapabilityType;4 importorg.openqa.selenium.remote.DesiredCapabilities;5 importorg.testng.Assert;6 importorg.testng.annotations.AfterMethod;7 importorg.testng.annotations.BeforeMethod;8 importorg.testng.annotations.Test;9

10 importio.appium.java_client.android.AndroidDriver;11

12 importjava.io.File;13 importjava.net.URL;14 importjava.util.concurrent.TimeUnit;15

16 public classAppDemo {17 privateAndroidDriver driver;18

19 @BeforeMethod(alwaysRun = true)20 public void setUp() throwsException {21 //set up appium

22 DesiredCapabilities capabilities = newDesiredCapabilities();23 capabilities.setCapability(CapabilityType.BROWSER_NAME, "");24 capabilities.setCapability("platformName", "Android");25 capabilities.setCapability("deviceName", "Android Emulator");26 capabilities.setCapability("platformVersion", "4.4");27 //if no need install don't add this

28

29 File classpathRoot = new File(System.getProperty("user.dir"));30 File appDir = new File(classpathRoot, "apps");31 File app = new File(appDir, "apppiumDemo.apk");32 capabilities.setCapability("app", app.getAbsolutePath());33

34 capabilities.setCapability("appPackage", "com.example.apppiumdemo");35 //support Chinese

36 capabilities.setCapability("unicodeKeyboard", "True");37 capabilities.setCapability("resetKeyboard", "True");38 //no need sign

39 capabilities.setCapability("noSign", "True");40 capabilities.setCapability("appActivity", ".MainActivity");41 driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),42 capabilities);43 }44

45 @AfterMethod(alwaysRun = true)46 public void tearDown() throwsException {47 driver.quit();48 }49

50 @Test(groups = { "Test"})51 public voidTest() {52 driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);53 Assert.assertEquals(driver.findElementByClassName("android.widget.Button").getText(),"Test");54 System.out.println(driver.findElementByXPath("//android.widget.Button").getText());55

56

57 }58 }

运行结果:

PASSED:Test

===============================================

Default test

Tests run: 1, Failures: 0, Skips: 0

===============================================

===============================================

Default suite

Total tests run: 1, Failures: 0, Skips: 0

===============================================

总结: 无论何种方式生成的控件,都可以识别,如果没有resource-id可以使用其他方式,比如ByClass ByXpath等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值