我的手机是华为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
相关推荐
本项目专注于Android应用程序的自动化测试,使用了Python编程语言结合appium、pytest以及allure框架,实现了一套高效的多机并行测试解决方案,尤其针对华为设备进行了优化。 首先,Appium是一个开源的自动化测试...
项目的核心工具是APPIUM,一个广泛使用的跨平台移动自动化测试框架,支持Android和iOS应用的自动化。APPIUM允许测试工程师通过WebDriver协议与应用程序进行交互,使得测试脚本可以使用多种编程语言编写,如Java、...
Appium 是一个强大的开源自动化测试框架,专门针对移动端应用程序,包括原生、混合及移动Web应用。它支持iOS、Android以及FirefoxOS等平台,并且具备跨平台性,可以在OSX、Windows和Linux操作系统上运行。Appium 的...
3. Flamingo AutoTest:结合Airtest和Appium,针对各端特性提供不同的自动化测试方案。例如,Android端通过封装指令,iOS和小程序端使用图像识别。 4. Flamingo Proxy:基于Anyproxy扩展,用于捕获和处理埋点数据,...
华为笔试题java微信小程序自动化测试——基于Appium & Python3 微信小程序自动化测试方案,基于Appium 移动端测试框架及多种测试用例管理框架,使得UI测试更易于实施。 技术方案选型: Appium + Python3 + Behave ...
2. 自动化测试:利用工具(如Appium、Espresso)进行脚本编写,实现自动化测试用例的执行,提高效率。 3. 手动测试:对于复杂场景和交互,手动测试仍然是必要的,以确保用户的真实体验。 4. 回归测试:每次更新后,...
- **AFT Beta**:这可能是某个特定的自动化测试工具或框架的缩写,可能类似于业界常用的Selenium、Appium或JUnit等。这些工具用于编写和执行自动化测试脚本,提高测试效率,减少人工干预。了解如何使用这类框架,...
- **Appium**:跨平台移动应用自动化测试框架。 6. **敏捷开发与测试** - **Scrum**:敏捷开发框架,强调迭代和团队协作。 - **持续集成/持续部署(CI/CD)**:自动化的构建和测试过程,以尽早发现问题。 7. **...
1. **自动化测试**:华为可能会介绍如何使用各种自动化测试工具,如JUnit、Selenium或Appium,来提高测试效率,减少人工错误。 2. **性能测试**:华为的系统通常需要处理大量的并发请求,因此性能测试是必不可少的...
此外,熟悉自动化测试工具,如Selenium、Junit、Appium等,也是必不可少的,因为自动化测试在当今的开发环境中起着关键作用。 其次,编程能力对于测试工程师来说同样重要。虽然测试工程师的主要职责不是编写生产...
3. **自动化测试**:熟练掌握自动化测试工具和框架,如Selenium、JMeter、Appium等,以提高测试效率和准确性。 4. **性能测试**:理解性能测试的基本概念,如压力测试、负载测试和稳定性测试,能够设计并执行相关...
熟悉一种或多种自动化测试工具,如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是一个开源测试自动化框架,使用客户Duan+服务端方案。 客户Duan发送请求给服务端,服务端根据请求操作设备,然后返回结果。 appium客户Duan库官方提供有Ruby Python Java C# ... 我这个模块想做的就是appium...