app、appium UI自动化元素定位之特殊控件toast识别
1.toast提示
在登录完成后会有一个登录成功的toast提示,一闪而过,只是给用户一个简单的提醒,又不过于强硬,不像是alert
toast注意⚠️是系统发出来的,而不是app发出来的;
虽然一般不提倡用css进行定位,但是toast比较特殊,可以使用这种方式来定位
测试有apk在这里下载 apidemo apk:
toast一般来说在一个页面上只展示一个toast,所以用属性定位一般是没问题的
这个是用的uiautomator2
desired_caps['uiautomationName'] = 'uiautomator2'
为什么没加uiautomator2也可以使用呢,是因为adb默认就是用的这个,这个要理解
</android.widget.FrameLayout> <android.widget.Toast index="1" package="com.android.settings" class="android.widget.Toast" text="Clicked popup menu item Search" checkable="false" checked="false" clickable="false" enabled="false" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][0,0]" displayed="false" /> </hierarchy>
这里是一个定位demo api中的toast提示的一个demo,操作如下图,在apidemo中点击可弹出弹窗

def test_toast(self): self.driver.find_element(MobileBy.XPATH, "//*[@text='Make a Popup!']").click() self.driver.find_element(MobileBy.XPATH, "//*[@text='Search']").click() # print(self.driver.page_source) print(self.driver.find_element(MobileBy.XPATH, "//*[@class='android.widget.Toast']").text) # 注意这个元素定位,contains print(self.driver.find_element(MobileBy.XPATH, "//*[contains(@text,'Clicked popup menu')]").text)