• 代码报错解析


    一, AttributeError: 'NoneType' object has no attribute 'click' 出现原因,解决办法

    AttributeError: 'NoneType' object has no attribute 'click'这句话的意思是元素没有点击的这个属性。同理,AttributeError: 'NoneType' object has no attribute 'send_keys()’,是没有输入值的属性。

    当python代码出现这种问题时,一般有2种情况。

    一是没有找到这个元素,比如你想在设置中点击“语言和输入法”,但没定位到这个元素。在page页面中,你定义的方法没错,通过id,xpath,等方法找元素也没错。死活找不出原因时,报错的原因是uiautomatorviewer未扫描到控件。比如扫描的是第一屏,你的元素需要滑到第三屏才出现。在第一屏找不到你的元素所以会报错。这是第一种情况。

    第二种情况是元素确实被uiautomatorviewer扫描到。但还报错,说明这个元素真没这个属性。但这种机率很小,因为你不会给按钮加清空操作,给文本框加点击操作。

     以上个图片为例,错误原因是第一种,通过find_ele_ById_And_content方法找不到元素。解决思路:可在base_action.py文件中找到你定义的这个方法,

    def find_ele_ById_And_content(self, loc, content):
    list = self.driver.find_elements(By.ID,loc[1])
    for i in list:
    if i.get_attribute('text') == content:
    return i
    这行代码正确,那么我们就一步步print,如果哪一步不print,则哪一行出错,
    def find_ele_ById_And_content(self, loc, content):
    list = self.driver.find_elements(By.ID,loc[1])
    print('方法执行到这了')
    print(len(list)) #这行和上一行是检查list的长度,print(list)是list的内容。要上一行的目的是方便看你打印这行的位置
    for i in list:
    t1 = i.get_attribute('text')
    print(t1) #打印list里元素的属性text
    if t1 == content:
    print(i) #打印元素
    return i
    这是一种思路,用这种方法还是解决不了。元素未显示的解决办法是在base_action里封装一个滑屏找元素,如果找到就返回这个元素,这个元素在page里进行操作,
    如点击,输入等操作。如果向上滑到页面最底部,向下滑到页面最顶部,向左滑到最右部,向右滑到最左部还找不到,就报错。
    在下一篇博客封装滑屏操作。
    二,TimeoutException

    TimeoutException超时错误,即没找到元素。

    三,UnicodeDecodeError: 'gbk' codec can't decode byte 0xa5 in position 59: illegal multibyte sequence

    f = open('文件地址','r',encoding='UTF-8')
    f.read()
    这样就可以读取出来了

    比如

    import yaml

    def main():

    with open('./data.yml', 'r', encoding='UTF-8') as f:
    data = yaml.load(f)
    print(type(data))
    print(data)

    if __name__ == '__main__':
    main()

    代码提示单词

    AttributeError:  属性错误,

    NameError:试图访问的变量名不存在

    SyntaxError:语法错误,代码形式错误

    Exception:所有异常的基类,因为所有python异常类都是基类Exception的其中一员,异常都是从基类Exception继承的,并且都在exceptions模块中定义。

    IOError:一般常见于打开不存在文件时会引发IOError错误,也可以解理为输出输入错误

    KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误

    IndexError:索引错误,使用的索引不存在,常索引超出序列范围,什么是索引

    TypeError:类型错误,内建操作或是函数应于在了错误类型的对象时会引发类型错误

    ZeroDivisonError:除数为0,在用除法操作时,第二个参数为0时引发了该错误

    ValueError:值错误,传给对象的参数类型不正确,像是给int()函数传入了字符串数据类型的参数。

  • 相关阅读:
    五秒自动刷新页面
    浅析MySQL中exists与in的使用 (写的非常好)
    基于shiro授权过程
    shiro认证
    jsp中<c:if>与<s:if>的区别
    链表数据结构相关
    队列Queue中add()和offer()的区别?
    Java中有几种线程池?
    解决idea使用jstl标签报错和不自动提示
    事务
  • 原文地址:https://www.cnblogs.com/noon-12/p/12654258.html
Copyright © 2020-2023  润新知