问题描述:
1.问题背景:appium 企业微信实现练习中,想要编写异常情况的测试用例,即添加成员时,姓名处填写含有特殊字符的内容。
2.复现步骤:手动输入时,输入特殊字符时,特殊字符不显示,且会出现如下toast提示:
3.自己尝试编写的用例,想直接使用sendkeys来传入特殊字符到姓名后面的必填处,然后直接定位toast,但是运行时在传入姓名时报错:
E selenium.common.exceptions.InvalidElementStateException: Message: Cannot set the element to ‘lll&^’. Did you interact with the correct element?
具体代码:
1.使用po实现,代码如下:
编辑页面:
from appium.webdriver.common.mobileby import MobileBy
from appium.webdriver.webdriver import WebDriver
from appiumtest.test_contact_po.pages.base_page import BasePage
class EditMemberPage(BasePage):
__ele_name = (MobileBy.XPATH,"//*[contains(@text,'姓名')]/.."
"/*[contains(@text,'必填')]")
__ele_phonenum = (MobileBy.XPATH,"//*[contains(@text,'手机')]/.."
"//*[contains(@text,'必填')]")
__save = (MobileBy.XPATH,"//*[@text='保存']")
__noname_toast = (MobileBy.XPATH, "//*[contains(@text,'姓名不能为空')]")
__misname_toast = (MobileBy.XPATH, "//*[contains(@text,'姓名只能由中英文字符及符号')]")
__misphone_toast = (MobileBy.XPATH,"//*[contains(@text,'请填写合法的手机号')]")
# 正常输入姓名和电话
def edit_member(self,name,phonenum):
# 1.输入姓名
self.find_ele(*self.__ele_name).send_keys(name)
# 2.输入手机
self.find_ele(*self.__ele_phonenum).send_keys(phonenum)
# 3.点击[保存]
self.find_ele(*self.__save).click()
from appiumtest.test_contact_po.pages.add_member_page import AddMemberPage
return AddMemberPage(self.driver)
# 输入含有特殊字符的姓名
def misname_toast(self,name):
# 1.输入姓名
self.find_ele(*self.__ele_name).send_keys(name)
self.find_ele(*self.__misname_toast)
用例页面:
from appiumtest.test_contact_po.pages.app import App
from appiumtest.test_contact_po.utils.member_info import MemberInfo
class TestWework:
def setup_class(self):
self.memberinfo = MemberInfo()
self.app=App()
def setup(self):
self.main = self.app.start().goto_main()
def teardown(self):
self.app.restart()
def teardown_class(self):
self.app.stop()
# 添加联系人case--添加成功1
def test_addmember_suc1(self):
name = self.memberinfo.get_member_name()
phonenum = self.memberinfo.get_member_phonenum()
self.main.goto_contactpage().\
goto_addmember().goto_editmember().\
edit_member(name,phonenum).find_toast()
# 添加联系人case--添加成功2
def test_addmember_suc2(self):
name = self.memberinfo.get_member_name()
phonenum = self.memberinfo.get_member_phonenum()
self.main.goto_contactpage().\
goto_addmember().goto_editmember().\
edit_member(name,phonenum).find_toast()
# 输入特殊字符姓名
def test_addmember_fail1(self):
name = 'lll&^'
self.main.goto_contactpage().\
goto_addmember().goto_editmember().misname_toast(name)
上述代码中,运行test_addmember_fail1时,代码运行到编辑成员页面中,姓名处sendkeys就失败了,报错如下:
E selenium.common.exceptions.InvalidElementStateException: Message: Cannot set the element to 'lll&^'. Did you interact with the correct element?
想请问下,如何在姓名处输入特殊字符以便定位到上述图片中的错误toast呢?