1、先上问题,知道是什么问题先

 EE
======================================================================
ERROR: testCalcu (__main__.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\WorkSpace3\EXAMPLE\Appiu_ex\test.py", line 28, in testCalcu
self.driver.find_element_by_id("com.txt.calculator:id/tv_skip").click()
AttributeError: 'MyTest' object has no attribute 'driver' ======================================================================
ERROR: testCalcu (__main__.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\WorkSpace3\EXAMPLE\Appiu_ex\test.py", line 25, in tearDown
self.driver.quit()
AttributeError: 'MyTest' object has no attribute 'driver' ----------------------------------------------------------------------
Ran 1 test in 0.001s FAILED (errors=2)

2、再上源码,如果你也在5分钟内未找到该问题原因,呵呵,那就在后续写代码中一定要仔细再仔细

 # -*- coding:utf-8 -*-
from appium import webdriver
import unittest class MyTest(unittest.TestCase):
def setup(self):
desired_caps = {}
desired_caps['platformName'] ='Android'
desired_caps['platformVersion'] ='6.0'
desired_caps['deviceName'] ='DIYTHYTCCQBIV47D'
desired_caps['appPackage'] ='com.txt.calculator'
desired_caps['appActivity'] ='.Calculator'
desired_caps["unicodeKeyboard"] ="True"
desired_caps["resetKeyboard"] ="True"
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) def tearDown(self):
self.driver.quit() def testCalcu(self):
self.driver.find_element_by_id("com.txt.calculator:id/tv_skip").click()
self.driver.find_element_by_id("com.txt.calculator:id/digit_8").click()
self.driver.find_element_by_id("com.txt.calculator:id/op_add").click()
self.driver.find_element_by_id("com.txt.calculator:id/digit_5").click()
self.driver.find_element_by_id("com.txt.calculator:id/eq").click()
try:
result = self.driver.find_element_by_class_name("android.widget.EditText").text
self.assertEqual('', result, "The result isn't right")
except Exception as e:
print (e)
self.fail("The element is wrong or non-exists") if __name__ == '__main__':
unittest.main()

3、duang   duang  duang duang开始计时

~~~~~5分钟之后,给出出问题的源码

class MyTest(unittest.TestCase):
def setup(self):

  注意setup   此处 up首字要大写,如未按照unittest框架的要求进行编写,它自然就不会先进行初使化了,自然也就出现后面的报错 MyTest实例中没有driver的属性

修改正确如下:

class MyTest(unittest.TestCase):
def setUp(self):

  

[BUG]Appium1.9.1 这个问题竟然花了我5分钟进行定位的更多相关文章

  1. zookeeper频繁异常问题分析

    Reference: https://blog.csdn.net/xjping0794/article/details/77784171 1.1            操作系统信息1.1.1      ...

  2. [ZZ]最小化不可重现的bug

    http://testerhome.com/topics/577 原文请见 Minimizing Unreproducible Bugs 不能重现的 bug 是我的灾难.我常常找到一个bug 后来又听 ...

  3. BUG,带给我的思考

    今天打开EverNote时,翻到了四年前在anjuke时做的一些bug分析总结.现在回过头看看也是有些价值所在,挑选出部分bug分享,希望能有所启发. 一. iOS新房APP4.4由于在91市场进行试 ...

  4. 一个诡异的MySQL查询超时问题,居然隐藏着存在了两年的BUG

    这一周线上碰到一个诡异的BUG. 线上有个定时任务,这个任务需要查询一个表几天范围内的一些数据做一些处理,每隔十分钟执行一次,直至成功. 通过日志发现,从凌晨5:26分开始到5:56任务执行了三次,三 ...

  5. 各种主流浏览器CSS、BUG兼容

    1.div的垂直居中问题 vertical-align:middle;将行距增加到和整个DIV一样高 line-height:200px;然后插入文字,就垂直居中了.缺点是要控制内容不要换行.---- ...

  6. 浏览器中CSS的BUG

    对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声明. 其它请参考:CSS hack 针对IE6,IE7,fir ...

  7. (视频)《快速创建网站》 4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)

    本文是<快速创建网站>系列的第9篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  8. IE6的bug

    借鉴http://css.doyoe.com/ 问题和经验列表,里面应有尽有.写几个常见的: 1.解决IE6及更早浏览器浮动时产生双倍边距的BUG display:inline 2.如何解决IE6下的 ...

  9. ie6下常见的bug 调整页面兼容性

    ie6下常见的bug 我们布局页面,首先符合标准,如何写一个页面的标准性? 但是ie6等浏览器本身就比较特殊,bug比较多,兵法云,知己知彼百战百胜.我们需要了解ie6的一些常见bug,这样,更好的调 ...

随机推荐

  1. [Luogu 3401] 洛谷树

    Description 有一棵树,要求支持 查询两点间简单路径的所有子链的异或和的和 修改某条边的权值 Solution 这种树上异或问题首先应该想到对于每个点存下一个前缀异或和表示这个点到根节点路径 ...

  2. .NET源码中的链表

    .NET中自带的链表是LinkedList类,并且已经直接实现成了双向循环链表. 其节点类LinkedListNode的数据结构如下,数据项包括指示到某个链表的引用,以及左,右节点和值. public ...

  3. ExtJS中xtype一览

    基本组件: xtype Class 描述 button Ext.Button 按钮 splitbutton Ext.SplitButton 带下拉菜单的按钮 cycle Ext.CycleButton ...

  4. c#方法转异步例子

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. oracle创建用户、授权、导入、导出命令总结

    1.创建用户 需要先用system用户登录数据库,因为system用户具有创建其他用户的权限. 语法[创建用户]: create user 用户名 identified by 口令[即密码]: 例子: ...

  6. minitab 输入一串数字

    有时候,我们要向minitab的worksheet输入一串串的数字,很是麻烦. 相如一串数字我们在一个pdf文件存着 那么效率最低的输入方法就是一个一个的输入,"Enter"进入下 ...

  7. Vue 系列之 样式相关

    Class 与 Style 绑定 动态修改元素样式 <head> <meta charset="utf-8" /> <meta http-equiv= ...

  8. SAP MM PIR里的Lower Limit & Upper Limit

    SAP MM PIR里的Lower Limit & Upper Limit 在PIR的价格的detail数据里,有2个字段:Lower Limit和Upper Limit.在今天之前,笔者从未 ...

  9. Linux 磁盘分区方案简析

    Linux 磁盘分区方案简析 by:授客 QQ:1033553122   磁盘分区 任何硬盘在使用前都要进行分区.硬盘的分区有两种类型:主分区和扩展分区.一个硬盘上最多只能有4个主分区,其中一个主分区 ...

  10. 安卓开发_浅谈Fragment之ListFragment

    ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...