Appium appium 获取 toast 信息获取不到的问题

陈子昂 · 2017年12月21日 · 最后由 测试小白 回复于 2018年12月04日 · 2185 次阅读

首先想确认下是否是 toast

业务上下文:
appium 对 1 个 btn 点击后,会出现一段文本,文本是 1 个在屏幕上出现几秒的信息框(信息是 you have pushed the setExtra Button!)

采取的 find_toast 来识别

def find_toast(driver, message):
    try:
        #ec =expected_conditions
        element = WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.PARTIAL_LINK_TEXT, message)))
        #_logger.debug("Get Toast : [%s]" % element)
        print('GET TOAST.....')
        return True
    except Exception, e:
        print("Get Toast Error : ", e)
       # _logger.debug("Get Toast : [%s and %s]" % (element, e))
        return False

业务执行是这个

find_toast(driver, 'you have pushed the setExtra Button!')

结果输出是

Get Toast Error : Message: 为空拿不到信息

求助

是否是用 By.PARTIAL_LINK_TEXT 去拿到元素,元素是否是 toast

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 13 条回复 时间 点赞

uiautomator2 里 我识别不到 xpath,只知道 classname:android.widget.Toast
请问这样的话如何处理啊

应该是 toast 的,我是用 xpath 定位的,但是会出现偶尔获取不到的情况,一直不知道怎么解决。。。😫

try:
    message = '//*[@text=\'{}\']'.format(message)
    element = WebDriverWait(driver, 5).until(expected_conditions.presence_of_element_located((By.XPATH, message)))
    return element.get_attribute('text')
except selenium.common.exceptions.TimeoutException:
    print('Time Out')
except selenium.common.exceptions.NoSuchElementException:
    print('NoSuchElement')
于归 回复

关键是我拿不到 xptah,你识别不到,不如把 poll 这个数值给设置低点,默认是 0.5

我用你相同代码,用 xpath 可以拿到://*[@text="msg"]

能否加我 1 个联系方式哦 qq 728661182。是这样的 我后面用了 xpath
代码和 2 楼的差不多 但还是走到 except 里面,请问下 desired_caps 里面需要添加其他项吗 比如 uiautomator2

代码和你一模一样,需要加入 uiautomator2:

try:
          WebDriverWait(self.driver, 10, 0.5).until(
              expected_conditions.presence_of_element_located((By.XPATH, xpath)))
          return {"result": True}
      except selenium.common.exceptions.TimeoutException:
          return {"result": False}
      except selenium.common.exceptions.NoSuchElementException:
          return {"result": False}
try:
          WebDriverWait(self.driver, 10, 0.1).until(
              expected_conditions.presence_of_element_located((By.XPATH, xpath)))

我改成 WebDriverWait(self.driver, 10, 0.1) 0.1s 100 个 toast 还是失败 3-5 个。 纠结死了,有大神能解决吗?

皆非 回复

我设置成 poll 值设置为 0.1 的时候,成功率都不到 50%,后来设置 poll=0.01,暂时跑出来的结果是每次都能获取到了。。。

黄晓阳 回复

好的吧 回头我也试试 感谢

所以最后是怎么解决的呀,楼主我和你的代码一样错误一样,就是获取不到 toast

desired_caps 里设置 automationName = uiautomator2 了吗?

黄晓阳 回复

我现在代码也一样 也设置了 automationName = uiautomator2 但还是获取不到呀

请问楼主解决了吗,我现在也遇到一样的问题,找不到 toast

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册