Appium+AS+Java(一)测试AndroidContactsTest.java样例遇到的问题

环境搭建参照:https://blog.csdn.net/niubitianping/article/details/52523239
遇到的问题:
1、导入的包不对
2、源代码有些地方用不了,调整了一点
3、appium在androidV7.0系统上运行时报错, Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.settings without first uninstalling.],appium窗口提示error定位到adb.js文件中
4、注释报错:编码GBK的不可映射字符
5、真机测试时,会弹出键盘,在setup()中设置屏蔽键盘
6、卸载软件报错
7、Swipe函数中duration设置过小,AS中报错,定位到Swipe函数

解决:

1、导入的包注意版本号
java-client-4.1.2.jar
selenium-server-standalone-3.0.0-beta3.jar

2、代码调整了一点,直接上代码

package com.example.demotest;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.util.List;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;

public class AndroidContactsTest {
//Driver
private AppiumDriver driver;
/**
* 配置启动driver
*
* @throws Exception
/
@Before
public void setUp() throws Exception {
//java.io.File classpathRoot = new java.io.File(“user.dir”);
//app的目录
java.io.File appDir = new java.io.File(“src/main/java/apps/”);
//app的名字,对应你apps目录下的文件
java.io.File app = new java.io.File(appDir, “ContactManager.apk”);
//创建Capabilities
DesiredCapabilities capabilities = new DesiredCapabilities();
// capabilities.setCapability(“noReset”, true);
//模拟器的名字
capabilities.setCapability(“deviceName”, “4e04d4a9”);
//安卓系统版本
capabilities.setCapability(“platformVersion”, “7.1.1”);
//设置app的路径
capabilities.setCapability(“app”, app.getAbsolutePath());
//设置app的包名
capabilities.setCapability(“appPackage”, “com.example.android.contactmanager”);
//使用unicode编码方式发布字符串
capabilities.setCapability(“unicodeKeyboard”, “true”);
//屏蔽软键盘
capabilities.setCapability(“resetKeyboard”, “true”);
//设置app的启动activity
capabilities.setCapability(“appActivity”, “.ContactManager”);
//启动driver
java.net.URL url = new java.net.URL(“http://127.0.0.1:4723/wd/hub”);
driver = new AndroidDriver<>(url, capabilities);
}
@Test
public void addContact() {
//利用Xpath的方法寻找text值为Add Contact的控件
WebElement el = driver.findElement(By.xpath(".//
[@text=‘Add Contact’]"));
//点击控件
el.click();
//利用类名获取界面上所有的EditText
List textFieldsList = driver.findElementsByClassName(“android.widget.EditText”);
//第一个EditText输入内容Some Name
textFieldsList.get(0).sendKeys(“Some Name”);
//第三个EditText输入内容Some@example.com
textFieldsList.get(2).sendKeys(“Some@example.com”);
//滑动位置,持续500ms
driver.swipe(100, 297, 100, 267, 500);
//找到save,点击
driver.findElementByXPath(".//*[@text=‘Save’]").click();
}
@After
public void tearDown() throws Exception {
//测试完毕,关闭driver,不关闭将会导致会话还存在,下次启动就会报错
driver.quit();
}
}

3、在adb.js文件中修改
问题详细描述:https://www.cnblogs.com/pengfy/p/10653104.html

预置条件:手机端已经安装完Appium Settings 和 Unlock两个应用
解决步骤:
1.修改源码文件-注释安装appiumSettings和unlock的两行代码
文件路径: X:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android.js
在这里插入图片描述
2.修改源码文件如下:
路径: \Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js
在adb.js的1035行找到

this.shell(“ps '” + name + “’”, function (err, stdout) {
if (err) return cb(err);
替换成
this.shell_grep(“ps”, name, function (err, stdout) {
if (err) {
logger.debug(“No matching processes found”);
return cb(null, []);
}

并增加上面用到的shell_grep函数,不是替换是增加
ADB.prototype.shell_grep = function (cmd, grep, cb) {
if (cmd.indexOf(’"’) === -1) {
cmd = ‘"’ + cmd + ‘"’;
}
var execCmd = 'shell ’ + cmd + '| grep ’ + grep;
this.exec(execCmd, cb);
};

4.注释报错:编码GBK的不可映射字符
原因:代码中的中文注释会编译报错
解决方案:
在项目build.gradle下添加下面代码
tasks.withType(JavaCompile) {
options.encoding = “UTF-8”
}
5、真机测试时,会弹出键盘,在setup()中设置屏蔽键盘
//使用unicode编码方式发布字符串
capabilities.setCapability(“unicodeKeyboard”, “true”);
//屏蔽软键盘
capabilities.setCapability(“resetKeyboard”, “true”);

6、卸载软件报错
Error: Command failed: C:\Windows\system32\cmd.exe /s /c “F:\Android\android_SDK\platform-tools\adb.exe -s 4e04d4a9 install
“F:\Appium\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk””> adb: failed to install F:\Appium\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk:
Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.settings without first uninstalling.]
解决办法:
adb uninstall io.appium.settings
adb uninstall io.appium.unlock
adb uninstall io.appium.android.ime

7、Swipe函数中duration设置过小,AS中报错
duration单位是ms,时间数值太小的话不行,加大持续时间,设置300以上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值