`

移动自动化测试_Appium_003_连华为P9真机测试

阅读更多

    我的手机是华为P9的,手头也没有其他测试的机子。就只能拿自己的当小白鼠了~~

    1. 开启手机的USB模式。USB模式其实就是android的一个开发者模式,

        是哪一款手机,直接百度查下相应的USB模式怎么开,大把的回答的。华为的步骤是:

       进入手机主界面->设置->关于手机->版本号 

       连续快速的点击版本号多次,网上是说7次左右。

       返回上一个界面,就会多出一个开发者选项的条目。

        进入开发者选项界面,选中USB调试即可。

        可参考: https://jingyan.baidu.com/article/fd8044faefa2b45031137aaa.html 

 

     2. 将手机与电脑用数据线连接。再次确认USB模式是否开启成功。

        命令行: adb devices -l    检查手机是否与电脑连接成功。 连接电脑时提示要安装华为手机助手,还有应用商店版本需要更新。反正它提示啥你就装啥吧。在这一步我也卡壳了好久,USB模式开启了过会儿检查又关闭,也不知道是什么原因。如果设置了手机密码啥的也暂时关掉吧。好像是勾选了USB模式之后,选择了一个默认调试的应用就可以了。反正下面这个界面出来我也是折腾了老半天。~~~~(>_<)~~~~    

 

    3.启动Appium并开启一个Appium Server。

     这里用的device就是上面查找到的内容。在启动Appium之前指定device的参数。


 

启动成功:


 

    4. test case代码:

       

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
 


import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;

import java.io.File;
import java.net.URL;
import java.util.List;
 
public class AppDemo {
    private  AndroidDriver  driver;
 
    @BeforeMethod(alwaysRun=true)
    public void setUp() throws Exception {
        // set up appium
//        File classpathRoot = new File(System.getProperty("user.dir"));
//        File appDir = new File(classpathRoot, "apps");
//        File app = new File(appDir, "notepad.apk");
//        System.out.println(app.isFile() + "==" + app.exists());
//        DesiredCapabilities capabilities = new DesiredCapabilities();
//        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
//        capabilities.setCapability("platformName", "Android");
//        capabilities.setCapability("deviceName","KWG5T16621002512");
//        capabilities.setCapability("platformVersion", "7.0");
//        capabilities.setCapability("app", app.getAbsolutePath());
//        capabilities.setCapability("appPackage", "com.example.android.notepad");
//        capabilities.setCapability("appActivity", "com.example.android.notepad.NotesList");
//        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        
        File classpathRoot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathRoot, "apps");
        File app = new File(appDir, "ContactManager.apk");
        System.out.println(app.isFile() + "==" + app.exists());
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName","KWG5T16621002512");
        capabilities.setCapability("platformVersion", "4.4");
        capabilities.setCapability("app", app.getAbsolutePath());
        capabilities.setCapability("appPackage", "com.example.android.contactmanager");
        capabilities.setCapability("appActivity", ".ContactManager");
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }
 
    @AfterMethod(alwaysRun=true)
    public void tearDown() throws Exception {
        driver.quit();
    }
    
    @Test(groups={"noteTest"})
    public void noteTest1()
    {
    	WebElement el = driver.findElement(By.xpath(".//*[@text='Add Contact']"));
        el.click();
        List<AndroidElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
        textFieldsList.get(0).sendKeys("Some Name");
        textFieldsList.get(2).sendKeys("Some@example.com");
        driver.swipe(100, 500, 100, 100, 2);
        driver.findElementByXPath(".//*[@text='Save']").click();
    }
}

 

     5. 执行TestNG的测试用例。又碰到了网上很多人都碰到过的一个错误,真是好事多磨啊。做我们这一行可真是一件默认耐心的事情啊。O(∩_∩)O哈哈~


     

   错误: info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Could not extract PIDs from ps output. PIDS: [], Procs: [\"bad pid 'uiautomator'\"])","origValue":"Could not extract PIDs from ps output. PIDS: [], Procs: [\"bad pid 'uiautomator'\"]"},"sessionId":null}

   按照网上搜到的解决方案,修改所谓的adb.js文件。解决了该问题。

   文件路径:E:\software\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js


 

 

 

注明:此时我升级了selenium 的包到2.53.0,java-client包到4.1.2

selenium-server-standalone-2.53.0.jar 

java-client-4.1.2.jar

 

相关jar包和安装包的分享路径:链接:https://pan.baidu.com/s/1c10nXM4 密码:ud21

 

网上测试的APK和测试代码可以在github上下载。有时间可以看看。

https://github.com/appium/sample-code/blob/master/sample-code/apps/ContactManager/ContactManager.apk 

 

https://github.com/appium/sample-code/blob/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidContactsTest.java

  • 大小: 7.5 KB
  • 大小: 44.5 KB
  • 大小: 14.6 KB
  • 大小: 92.8 KB
  • 大小: 16.4 KB
分享到:
评论

相关推荐

    安卓 Android APP自动化 python appium+pytest+allure 华为 多机并行

    本项目专注于Android应用程序的自动化测试,使用了Python编程语言结合appium、pytest以及allure框架,实现了一套高效的多机并行测试解决方案,尤其针对华为设备进行了优化。 首先,Appium是一个开源的自动化测试...

    app自动化-美团自动化测试项目

    项目的核心工具是APPIUM,一个广泛使用的跨平台移动自动化测试框架,支持Android和iOS应用的自动化。APPIUM允许测试工程师通过WebDriver协议与应用程序进行交互,使得测试脚本可以使用多种编程语言编写,如Java、...

    Appium自动化测试.docx

    Appium 是一个强大的开源自动化测试框架,专门针对移动端应用程序,包括原生、混合及移动Web应用。它支持iOS、Android以及FirefoxOS等平台,并且具备跨平台性,可以在OSX、Windows和Linux操作系统上运行。Appium 的...

    埋点自动化测试培训PPT分享

    3. Flamingo AutoTest:结合Airtest和Appium,针对各端特性提供不同的自动化测试方案。例如,Android端通过封装指令,iOS和小程序端使用图像识别。 4. Flamingo Proxy:基于Anyproxy扩展,用于捕获和处理埋点数据,...

    华为笔试题java-wxapp-appium:基于Appium的微信小程序自动化测试方案

    华为笔试题java微信小程序自动化测试——基于Appium & Python3 微信小程序自动化测试方案,基于Appium 移动端测试框架及多种测试用例管理框架,使得UI测试更易于实施。 技术方案选型: Appium + Python3 + Behave ...

    华为android系统测试用例

    2. 自动化测试:利用工具(如Appium、Espresso)进行脚本编写,实现自动化测试用例的执行,提高效率。 3. 手动测试:对于复杂场景和交互,手动测试仍然是必要的,以确保用户的真实体验。 4. 回归测试:每次更新后,...

    华为2017秋招测试工程师笔试试卷.pdf

    - **AFT Beta**:这可能是某个特定的自动化测试工具或框架的缩写,可能类似于业界常用的Selenium、Appium或JUnit等。这些工具用于编写和执行自动化测试脚本,提高测试效率,减少人工干预。了解如何使用这类框架,...

    华为及其他外包公司软件测试面试题

    - **Appium**:跨平台移动应用自动化测试框架。 6. **敏捷开发与测试** - **Scrum**:敏捷开发框架,强调迭代和团队协作。 - **持续集成/持续部署(CI/CD)**:自动化的构建和测试过程,以尽早发现问题。 7. **...

    华为内部培训资料

    1. **自动化测试**:华为可能会介绍如何使用各种自动化测试工具,如JUnit、Selenium或Appium,来提高测试效率,减少人工错误。 2. **性能测试**:华为的系统通常需要处理大量的并发请求,因此性能测试是必不可少的...

    华为 腾讯 测试面试题 面试技巧

    此外,熟悉自动化测试工具,如Selenium、Junit、Appium等,也是必不可少的,因为自动化测试在当今的开发环境中起着关键作用。 其次,编程能力对于测试工程师来说同样重要。虽然测试工程师的主要职责不是编写生产...

    2021-2022年华为解决方案测试笔试.zip

    3. **自动化测试**:熟练掌握自动化测试工具和框架,如Selenium、JMeter、Appium等,以提高测试效率和准确性。 4. **性能测试**:理解性能测试的基本概念,如压力测试、负载测试和稳定性测试,能够设计并执行相关...

    【案例】华为软件测试类技术任职资格.zip

    熟悉一种或多种自动化测试工具,如Selenium、Appium等,以及脚本语言如Python、Java,可以提升测试效率和准确性。 5. **性能测试**:性能测试用于评估系统在高负载或压力下的表现,包括负载测试、压力测试、稳定性...

    软件测试面试题(华为 中兴 ....)

    此外,**自动化测试**的应用,如Selenium、Appium等工具,也是热门话题。 **华为和中兴**作为知名的通信设备和解决方案提供商,它们的面试中可能会涉及特定的测试领域: 1. **网络设备测试**:由于华为和中兴主要...

    软件测试面试题汇总整理

    9. **自动化测试**:面试者应掌握至少一种自动化测试框架,如JUnit、TestNG(Java)、Pytest(Python)等,以及如何编写可维护的测试脚本。 10. **Web测试**:针对Web应用程序的测试,包括前端和后端。了解HTML、...

    软件测试面试笔试题

    - **Appium**:理解如何使用Appium进行移动应用的跨平台自动化测试。 - **持续集成与持续部署(CI/CD)**:熟悉Jenkins、GitLab CI/CD等工具,实现自动化构建和测试。 4. **性能测试** - **LoadRunner**:学习如何...

    appium模块、adb模块 源码-易语言

    appium是一个开源测试自动化框架,使用客户Duan+服务端方案。 客户Duan发送请求给服务端,服务端根据请求操作设备,然后返回结果。 appium客户Duan库官方提供有Ruby Python Java C# ... 我这个模块想做的就是appium...

Global site tag (gtag.js) - Google Analytics