android 9.0 toast不显示,9.0 toast定位+WebDriverWait显示等待

Toast  判断-----基本操作问题

首先基本操作,进入安卓市场的账号密码页面---

7dbb11fc5e1efef4b569d111525cd9ed.png

from appium importwebdriverfrom selenium.webdriver.support.ui importWebDriverWaitfrom selenium.webdriver.support importexpected_conditions as ECfrom appium.webdriver.common.touch_action import TouchAction #导入Touch Action类

importtime,re,os

Start={}

Start['platformName']='android' #设备型号 android或者ios

Start['platformVersion']='5.1' #安卓设备版本号

Start['deviceName']='192.168.176.101:5555' #安卓设备名称

Start['app']=r'C:\Users\Administrator\Desktop\xuexi\apk\anzhuoshichang_16793302.apk' #设备路径 pc电脑存放apk包的路径#上面的路径不推荐这种写法,但是目前先这么写!后续告诉大家正确的写法

Start['appPackage']='com.hiapk.marketpho' #包名

Start['appActivity']='com.baidu.appsearch.LauncherActivity' #容器

Start['noReset']='True' #是否重新安装app True不重新安装

Start['unicodeKeyboard']='True' #是否禁用手机键盘 True禁用手机输入法

Start['resetKeyboard']='True' #是否启动appium自带键盘 True开始手机输入法

Start['automationName']='uiautomator2' #可选模式 本教程默认 Uiautomator2

Start['newCommandTimeout']='400' #超时时间(s)

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',Start)

driver.implicitly_wait(10) #隐式等待十秒

time.sleep(3)'''模拟器或者手机上已经有了安卓市场,那么启动之后,直接点击左上角的头像图标'''head='com.hiapk.marketpho:id/person_center_btn'driver.find_element_by_id(head).click()#点击头像图标进入个人中心

time.sleep(5)

login='com.hiapk.marketpho:id/please_login'driver.find_element_by_id(login).click()#点击立即登录

time.sleep(5)

为什么要进入到这个页面呢---因为这个页面输入有个toast提示............

如图所示:这个toast提示是在uiautomator上面定位不到的,所以需要稍微处理一下!

e6a27d069071bccdbd92a75c3bbbacb4.png

然后随便输入一个手机号码和一个密码登记登录:

Elements=driver.find_elements_by_id('com.hiapk.marketpho:id/edt_text')

Elements[0].set_text('17700000000') #因为账号输入和密码输入id相同,所以需要用到elements,之前有介绍过

Elements[1].set_text('123456')

driver.find_element_by_id('com.hiapk.marketpho:id/btn_login').click()

这时手机出现下图所示的toast提示:

ce202583243c373dcd8b6936396a7a23.png

之前章节有说过权限弹窗定位的那个方法--用在这里就O了!记得导入这个库

from selenium.webdriver.support import expected_conditions as EC

42555895030c095513d510874322197f.png

try:

Element= ("xpath", "//*[@text='网络连接异常,请重试']")

WebDriverWait(driver,30, 0.5).until(EC.presence_of_element_located(Element))print('获取到toast提示:网络连接异常,请重试')except:print('凉了,兄碟')

稍微换一下写法呢:

0b1d058625d27e0e2599af9f78debf8d.png

结果:很舒服---也是可以的--

try:

Element= "//*[@text='网络连接异常,请重试']"WebDriverWait(driver,60, 0.5).until(lambdadriver:driver.find_element_by_xpath(Element))print('获取到toast提示:网络连接异常,请重试')except:print('凉了,兄碟')

备注:toast定位基本上是稳定的,但是偶尔会判断不鸟,属于正常现象,建议把扫描时间0.5s换成0.1s会稳定很多!

WebDriverWait(driver,60, 0.5).until(lambda driver:driver.find_element_by_xpath(Element))

这个是显示等待, 意思就是 等待60s   在这六十秒中,每隔0.5秒扫描一次,是否出现元素 Element

现在把上面的强制等待time.sleep()全部换成显示等待!

169e4290f6c7b209c6052d9a3e172c46.png

from appium importwebdriverfrom selenium.webdriver.support.ui importWebDriverWaitfrom selenium.webdriver.support importexpected_conditions as ECfrom appium.webdriver.common.touch_action import TouchAction #导入Touch Action类

importtime,re,os

Start={}

Start['platformName']='android' #设备型号 android或者ios

Start['platformVersion']='5.1' #安卓设备版本号

Start['deviceName']='192.168.176.101:5555' #安卓设备名称

Start['app']=r'C:\Users\Administrator\Desktop\xuexi\apk\anzhuoshichang_16793302.apk' #设备路径 pc电脑存放apk包的路径#上面的路径不推荐这种写法,但是目前先这么写!后续告诉大家正确的写法

Start['appPackage']='com.hiapk.marketpho' #包名

Start['appActivity']='com.baidu.appsearch.LauncherActivity' #容器

Start['noReset']='True' #是否重新安装app True不重新安装

Start['unicodeKeyboard']='True' #是否禁用手机键盘 True禁用手机输入法

Start['resetKeyboard']='True' #是否启动appium自带键盘 True开始手机输入法

Start['automationName']='uiautomator2' #可选模式 本教程默认 Uiautomator2

Start['newCommandTimeout']='400' #超时时间(s)

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',Start)

driver.implicitly_wait(10) #隐式等待十秒

time.sleep(3)'''模拟器或者手机上已经有了安卓市场,那么启动之后,直接点击左上角的头像图标'''head='com.hiapk.marketpho:id/person_center_btn'driver.find_element_by_id(head).click()#点击头像图标进入个人中心

#time.sleep(5)

login='com.hiapk.marketpho:id/please_login'

#判断十秒内是否获取到登录元素

WebDriverWait(driver,10,0.5).until(lambdadriver:driver.find_element_by_id(login))

driver.find_element_by_id(login).click()#点击立即登录#time.sleep(5)

Elements=driver.find_elements_by_id('com.hiapk.marketpho:id/edt_text')#点击立即登录之后,获取下一页页面的元素

WebDriverWait(driver,10,0.5).until(lambda driver:driver.find_element_by_xpath('//*[@text="手机/邮箱/通行证"]'))

Elements[0].set_text('17700000000') #因为账号输入和密码输入id相同,所以需要用到elements,之前有介绍过

Elements[1].set_text('123456')

driver.find_element_by_id('com.hiapk.marketpho:id/btn_login').click()#因为这个toast提示时间出来的有点晚,所以等待时间稍微加那么一丢丢#try:#Element = ("xpath", "//*[@text='网络连接异常,请重试']")#WebDriverWait(driver,60, 0.5).until(EC.presence_of_element_located(Element))#print('获取到toast提示:网络连接异常,请重试')#except:#print('凉了,兄碟')

try:

Element= "//*[@text='网络连接异常,请重试']"WebDriverWait(driver,60, 0.5).until(lambdadriver:driver.find_element_by_xpath(Element))print('获取到toast提示:网络连接异常,请重试')except:print('凉了,兄碟')

基本上原理都是大同小异....理解了之后,可以写的花里胡哨的!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!如果Android Studio中的Toast无法正常显示,可能是以下原因之一: 1. 您没有在Toast中设置要显示的文本。请确保在Toast的makeText()方法中传入要显示的文本: ``` Toast.makeText(getApplicationContext(), "要显示的文本", Toast.LENGTH_SHORT).show(); ``` 2. 您可能没有在正确的上下文中创建Toast。如果您在非Activity类中创建了Toast,那么您需要传入一个正确的上下文。例如,在Fragment中创建Toast,应该使用Fragment的getContext()方法: ``` Toast.makeText(getContext(), "要显示的文本", Toast.LENGTH_SHORT).show(); ``` 3. 您可能没有调用show()方法。请确保在创建Toast之后调用show()方法才能显示Toast。 如果以上方法仍然无法解决问题,您可以尝试清除项目缓存并重新构建项目,或者尝试在不同的设备或模拟器上运行应用程序 ### 回答2: 在Android开发中,Toast是一种简单的通知,用于在屏幕上显示一段文字或图标等。但是,有时候在使用Android Studio时,Toast可能会出现不显示的情况。下面是可能导致Toast显示的几种原因以及相应的解决方法: 1. Toast没有被正确地初始化和显示。在初始化Toast时,需要通过调用makeText()方法来创建Toast对象,并在调用show()方法时显示Toast。如果忘记了调用show()方法,或者将show()方法和makeText()方法调用顺序错误,就会导致Toast显示。可以检查代码中是否正确地调用了makeText()和show()方法。 2. Toast显示时间太短。在调用show()方法时,可以设置Toast显示的持续时间。如果持续时间设置得太短,Toast可能会在显示出来之前就被关闭。可以尝试增加Toast的持续时间,或者将显示的文本内容缩短,以确保Toast能够被完整地显示出来。 3. Toast被其他布局元素遮盖。有时候,Toast可能会被其他布局元素遮盖,导致无法显示。可以通过将Toast的位置移动到屏幕上方或下方或改变布局元素的位置来解决这个问题。 4. Toast被不透明的背景遮盖。如果Toast的背景色与布局元素的背景颜色相同,或者Toast的背景色被设置为不透明,可能会导致Toast被遮盖而无法显示。可以尝试更改Toast的背景颜色或透明度,或者将Toast放置在一个不透明的布局元素之上以确保其能够显示出来。 总之,对于Toast显示的问题,需要认真检查代码,确保Toast的初始化和显示方法调用正确无误,以及确保Toast没有被遮盖或设置不正确的背景色或透明度等问题。同时,注意Toast显示时间和显示位置,以确保Toast能够被正确地显示出来。 ### 回答3: 在Android Studio中,Toast是一种用于显示简短信息的小型弹框。如果你遇到了Toast显示的问题,可以尝试以下几种解决方法: 1. 检查Toast长度:Toast有两种长度:LENGTH_SHORT和LENGTH_LONG。如果你使用了LENGTH_SHORT,但是Toast还是不显示,你可以尝试使用LENGTH_LONG来调节Toast的长度。 2. 检查上下文:在调用Toast时,需要传入一个上下文参数。如果你传入的上下文参数不正确,Toast就无法显示。通常情况下,上下文参数应该是当前Activity或者当前Context。 3. 检查屏幕亮度:当屏幕亮度设置为0的时候,Toast会失效。你可以尝试将屏幕亮度调节到大于0的值来解决这个问题。 4. 检查主线程:在Android中,UI操作必须在主线程中执行。如果你在子线程中调用了ToastToast是无法显示的。你可以使用runOnUiThread()方法在主线程中调用Toast。 5. 检查背景色:有时候Toast会被应用程序的主题或者背景色所遮盖,导致无法显示。你可以尝试改变Toast的背景色,或者将Toast设置为透明来解决这个问题。 如果以上方法都无法解决问题,你可以尝试重新启动Android Studio或者重启设备。同时,你也可以在网络上查找相关解决方案或者咨询相关专业人士来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值