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

来源:
网络
收录时间:
2021-03-05 01:04:27
科技 阅读 189237

摘要:list AttributeError: ‘NoneType‘ object has no attribute ‘click‘这句话的意思是元素没有点击的这个属性。同理,AttributeError: ‘NoneType‘ object has no attribute ‘send_keys()’,是没有输入值的属性。当python代码出现这种问题时,一般有2种情况。一是没有找到这个元素,比如你想在设置中点击“语言和输入法”,但没定位到这个元素。死活找不出原因时,报错的原因是uiautomatorviewer未扫描到控件。第二种情况是元素确实被uiautomatorviewer扫描到。

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里进行操作,
如点击,输入等操作。如果向上滑到页面最底部,向下滑到页面最顶部,向左滑到最右部,向右滑到最左部还找不到,就报错。
在下一篇博客封装滑屏操作。

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

原文地址:https://www.cnblogs.com/noon-12/p/12654258.html

查看全文
返回顶部