AppiumDriver升级到2.0.0版本引发的问题--Cannot instantiate the type AppiumDriver

1. 问题描述和起因
在使用Appium1.7.0及其以下版本的时候,我们可以直接使用如下代码来创建一个AppiumDriver实例进行对安卓设备的操作。

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
但在把Appium包升级到当前最新的2.0.0版本的时候,这段代码会引发如下的一问题

当前的pom.xml相关设置如下:记得把1.7.0改成2.0.0或者是将来更高级版本

<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>2.0.0</version>
<del><version>1.7.0</version></del>
</dependency>
2.问题分析
究其原因,发现Appium2.0.0把AppiumDriver这个类改成了抽象函数,所以到导致了这个问题
public <span style="color:#ff0000;">abstract </span>class AppiumDriver extends RemoteWebDriver implements MobileDriver,
ContextAware, Rotatable, FindsByAccessibilityId, LocationContext,
DeviceActionShortcuts, TouchShortcuts, InteractsWithFiles,
InteractsWithApps, ScrollsTo {

private final static ErrorHandler errorHandler = new ErrorHandler(
new ErrorCodesMobile(), true);
private URL remoteAddress;
private RemoteLocationContext locationContext;
private ExecuteMethod executeMethod;

// frequently used command parameters
protected final String KEY_CODE = "keycode";
protected final String PATH = "path";
private final String SETTINGS = "settings";
根据2.0.0的Changelog的第一点:
Changelog

2.0.0

<ul><li><span style="font-family: Arial, Helvetica, sans-serif;">AppiumDriver is now an abstract class, use IOSDriver and AndroidDriver which both extend it. You no longer need to include the PLATFORM_NAME desired capability since it's automatic for each class. Thanks to @TikhomirovSergey for all their work</span></li></ul><span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span><span style="color:#3366ff;">AppiumDriver现在变成了一个抽象类,请使用从它继承下来的IOSDriver和AndroidDriver。你不再需要加上PLATFORM_NAME这个capability,因为代码会根据你使用的是IOSDriver或者AndroidDriver来确定究竟是哪个平台。</span>
</span><ul><li><span style="font-family: Arial, Helvetica, sans-serif;">ScrollTo() and ScrollToExact() methods reimplemented</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">Zoom() and Pinch() are now a little smarter and less likely to fail if you element is near the edge of the screen. Congratulate @BJap on their first PR!</span></li></ul>

3.问题解决
根据问题分析,把代码修改如下,使用AndroidDriver而非原来的AppiumDriver。
public class NoetPadTest {
/**
* Create the test case
*
* @param testName name of the test case
*/
private <span style="color:#ff0000;">AndroidDriver </span>driver;

@Before
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");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","Android");
//capabilities.setCapability("platformVersion", "4.2");
capabilities.setCapability("platformName", "Android");
//capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", "com.example.android.notepad");
capabilities.setCapability("appActivity", "com.example.android.notepad.NotesList");
//capabilities.setCapability("appActivity", ".NotesList");
driver = new <span style="color:#ff0000;">AndroidDriver</span>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

@After
public void tearDown() throws Exception {
driver.quit();
}

---------------------

原文:https://blog.csdn.net/zhubaitian/article/details/39717889

转载于:https://www.cnblogs.com/kaola8023/p/10919872.html

问题一:使用AndroidDriver而非原来的AppiumDriver的原因相关推荐

  1. c语言将时速转换成配速,都是速度指标,为何跑步用“配速”而非“时速”?3个原因请明白...

    原标题:都是速度指标,为何跑步用"配速"而非"时速"?3个原因请明白 有一个网友给我留言,问了一个看似超简单的问题:为什么跑步锻炼者都喜欢用"配速&q ...

  2. CPU不支持非地址对齐访问的原因

    解答: https://stackoverflow.com/questions/3903164/why-misaligned-address-access-incur-2-or-more-access ...

  3. CPL DPL RPL的区别 一致性代码段和非一致性代码段

    概述:在谈论保护模式编程的时候,一直会有这样的困惑:为什么除了CPL和DPL还有RPL?什么时候高特权级不能访问低特权级?什么时候低特权级不能访问高特权级?一致性代码和非一致性代码有什么区别?等等这些 ...

  4. amd显卡风扇调节_非公版才是真爱 讯景XFX RX6800 XT海外版显卡评测

    前言: 近几年电脑硬件市场可谓精彩纷呈,CPU方面Intel和AMD你方唱罢我登场,而且让A饭喜闻乐见的是AMD胜仗连连,并在历经三代锐龙后,在锐龙5000上逐渐实现了单核多核效能的全面反超Intel ...

  5. java授查 非授查异常_java检查异常与非检查异常

    Java的可检测异常和非检测异常泾渭分明.可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则. 非检测异常不遵循处理或声明规则.在产生此类异常时,不一定非要采取任何适当 ...

  6. linux装软件需要root用户,Linux下非root用户安装软件的一般流程:

    1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可 3. 切换到解压后的目录, ...

  7. 是时候该学会 MMDetection 进阶之非典型操作技能(一)

    目录 前言 1 如何给不同 layer 设置不同的学习率以及冻结特定层 1.1 DefaultOptimizerConstructor 1.2 冻结特定层解决办法 2 如何在训练中优雅地使用多张图数据 ...

  8. 在ICT圈子找非研发工作

    该文受众:BUPT计算机通信专业欲从事非研发工作的低年级童鞋 这里先申明一下.为什么说是非研发工作而不是非技术工作呢?大部分童鞋把开发.测试类岗位定义成技术类工作,而其它类型工作统一称为非技术类:我觉 ...

  9. 非劣效性 等效性 有效性临床试验

    非劣效是个什么鬼? 本文只是为了更好地理解临床试验中的优效性(superiority).等效性(equivalence)以及非劣效性(non-inferiority),进一步了解可参阅: (1)CCT ...

最新文章

  1. [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)...
  2. Nacos 1.3.0 发布,一个修炼内功的版本:全新内核构建!
  3. 服务器广播消息,c#-从服务器广播消息
  4. IDEA开发vue.js卡死问题
  5. 一文读懂视频监控系统全过程内容
  6. php瀑布墙,phpwind Next增加“瀑布流”图墙展示模式
  7. 消息中间件常见问题汇总
  8. 手绘水彩卡通插画 | 艺术品因有灵魂而珍藏
  9. 5G:无人驾驶的“超级英雄”路
  10. 【转】64位ORACLE客户端上plsql无法识别ORACLE_HOME解决方案
  11. db2官方SQLSTATE代码提示
  12. 如何使用迭代器Iterator与增强for循环遍历Map集合?
  13. 内存数据库 TimesTen
  14. android studio怎么创建布局,Android Studio--活动创建简单布局
  15. openjudge 1.9.14 铺地毯
  16. 七夕常用的shell表白脚本
  17. python 绘图 坐标轴范围 颜色 保存
  18. [QT_016]Qt学习之QPlainTextEdit 、QTextEdit 、QTextBrowser
  19. Unity Timeline运行时脚本控制Mute和UnMute(Mute/UnMute a timeline track via scripting)
  20. 那个学php的上吊了,一路名校的中国博士,在美国上吊自杀了

热门文章

  1. 《那些年啊,那些事——一个程序员的奋斗史》——61
  2. bootstrap思考一
  3. 企业级NGINX的重定向rewrite
  4. 0428专题:行内元素与块状元素
  5. ASP.NET MVC Json的序列化和反序列化
  6. 网页动画结束判断事件
  7. 【转】各种媒体数据以 base64 编码方式直接嵌入网页中的写法
  8. 20、【购物车模块】——更新、删除、查询购物车功能开发
  9. 服务器系统的王者——Linux 系统
  10. 用Git虚拟文件系统来解决大型存储问题