请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

unitest用例执行提示获取元素是NoneType问题

老师我是自动化的新手当前基本按照教程里面的PO模型写的代码测试的是自己的app。python3版本。
用例是:点击笔记标题 弹出dialog会话框 输入框输入标题名 点击确认
PO模型各层相关的代码
page层

def get_note_name_element(self):
    '''
    获取笔记标题元素
    :return:
    '''
    return self.get_local_by.get_element('note_name', 'note_element')
def get_note_edit_name(self):
    '''
    点击note_name后弹出的对话框中 输入框元素
    :return:
    '''
    return self.get_local_by.get_element('edit_name', 'note_element')

handle层

def click_note_name(self):
    '''
    点击标题 区域
    :return:
    '''
    self.note_page.get_note_name_element().click()
def edit_note_name(self, new_note_name):
    '''
    编辑笔记的标题
    :param new_note_name:
    :return:
    '''
    self.note_page.get_note_edit_name().send_keys(new_note_name)

business层

   def edit_pass(self):
    '''
    编辑标题成功
    :return:
    '''
    self.note_handle.click_note_name()
    # print("已经点击标题区域了。。。。")
    self.note_handle.edit_note_name(u"测试标题")
    self.note_handle.edit_confirm()
    self.note_handle.save_and_back()

case层
import unittest
import HTMLTestReportCN
from business.note_business import NoteBusiness
import time
class NoteCase(unittest.TestCase):

@classmethod
def setUpClass(cls):
    print("this is set up class.")

@classmethod
def tearDownClass(cls):
    print("this is tear down class.")

def setUp(self):
    # print("开始初始化driver.")
    self.note_business = NoteBusiness()

def tearDown(self):
    print("this is tear down.")

def test001(self):
    '''
    修改笔记标题成功
    :return:
    '''
    self.note_business.edit_pass()

用例执行时business层的第一句点击操作执行成功了但是第二句self.note_handle.edit_note_name(u"测试标题")找不到元素是NoneType报错如下

Traceback (most recent call last):
File “D:/EPD_xbdn_Test/TestProjects/UIAutomatedProject/case/note_case.py”, line 31, in test001
self.note_business.edit_pass()
File “D:EPD_xbdn_TestTestProjectsUIAutomatedProjectusiness
ote_business.py”, line 28, in edit_pass
self.note_handle.edit_note_name(u"测试标题")
File “D:EPD_xbdn_TestTestProjectsUIAutomatedProjecthandle
ote_handle.py”, line 23, in edit_note_name
self.note_page.get_note_edit_name().send_keys(new_note_name)
AttributeError: ‘NoneType’ object has no attribute ‘send_keys’

现在我的用例执行卡在这个步骤了其他的用例也是同类的报错。希望老师能给我解答下原因

正在回答 回答被采纳积分+3

1回答

Mushishi 2020-07-14 10:22:58

self.note_page.get_note_edit_name().send_keys(new_note_name) 说明没有找到元素。元素没找到。你去把你得self.note_page.get_note_edit_name() 打印出来是一个None

0 回复 有任何疑惑可以回复我~
  • 提问者 wayne_1991 #1
    谢谢老师回复,但是还是不明白出现的原因,同一个note_handle为什么没有传递下去;在business里面:
    def edit_pass(self):
        self.note_handle.click_note_name()
        self.note_handle.edit_note_name(u"测试标题")
        self.note_handle.edit_confirm()
        self.note_handle.save_and_back()
    为什么只有第一句执行成功了,然后就找不到元素了呢?这个要怎么排查原因啊
    回复 有任何疑惑可以回复我~ 2020-07-14 11:17:56
  • 提问者 wayne_1991 #2
    我把business四条语句中各个元素获取的位置加了打印,结果如下:
    <appium.webdriver.webelement.WebElement (session="2d23432d-9400-4494-b6f6-886fb635b8fa", element="7d168ec8-057d-4e6a-a754-bd213625d272")>
    None
    None
    None
    执行完第一句之后element元素就获取不到了
    回复 有任何疑惑可以回复我~ 2020-07-14 11:38:13
  • Mushishi 回复 提问者 wayne_1991 #3
    你看你上面element是获取到了得,但是你下面就是None,这个时候你需要去看你上一层对下一层返回得时候返回得是上面。你None又是什么情况下才会返回。 去打印
    回复 有任何疑惑可以回复我~ 2020-07-14 20:17:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信