Appium appium1.10.0,使用 page_element 方法获取页面元素报错,如何解决?

crazydo · 2018年12月23日 · 最后由 老师夸我胖 回复于 2018年12月27日 · 2228 次阅读

环境:
appium1.10.0
xcode 10.1
pytest 3.5.0

例子:
控件定义:sousuo_btn = page_element(accessibility_id="HXSearchStockView")

if public_page.sousuo_btn :
public_page.sousuo_btn.click()
else:
.......

假设 sousuo_btn 定义正确,当元素存在该页面时,则点击动作能跑成功,但是如果页面不存在 sousuo_btn 控件时,则会直接在 page_element 方法内报错 (信息如下),不走 else 语句,
求解决!!!
page_object/appium_page_objects.py:92: in get
return self.find(context)
page_object/appium_page_objects.py:79: in find
return context.find_element(*self.locator)
../../Library/Python/2.7/lib/python/site-packages/appium/webdriver/webdriver.py:220: in find_element
'using': by,'value': value})['value']
../../Library/Python/2.7/lib/python/site-packages/selenium/webdriver/remote/webdriver.py:201: in execute
self.error_handler.check_response(response)
../../Library/Python/2.7/lib/python/site-packages/appium/webdriver/errorhandler.py:24: in check_response
super(MobileErrorHandler, self).check_response(response)

共收到 5 条回复 时间 点赞

控件不存在肯定会报错啊

# 在 Page Object 封装逻辑,不存在元素返回None
sousuo_btn = page_element(accessibility_id="HXSearchStockView")

if sousuo_btn:
    public_page.sousuo_btn.click()
else:
    .......
try:
  public_page.sousuo_btn.click()
except Exceptions as err:
  do something
arrow 回复

如果不存在理应是返回 none,然后执行 else 语句,但是现在由于找不到直接抛错了,,是不是最新版 appium 有改过获取元素的逻辑?

徐旻 回复

捕获异常的话感觉有点麻烦,,每个控件都要去捕获一下,,我猜会不会是 page_element() 方法问题

请问楼主 appium 使用 1.10.0,你们 appium 的客户端使用的哪个版本

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