Appium 1.5 以上无法使用by_name 定位的解决办法

1. 使用by_xpath 代替

s='立即注册'

driver.find_element(By.XPATH,"//*[@text='%s']"%s)

可以通过这种方式间接变成 by_name 的方法, 而且用法变化不大,封装好后的方法:


def get_element_by_text(self,text):

   try:

           WebDriverWait(self.driver,5,0.5).until(lambdadriver:driver.find_element(By.XPATH,"//*[@text='%s']"%text).is_displayed())

           return  self.driver.find_element(By.XPATH,"//*[@text='%s']"%text)

    except:

        print(u"%s 页面中未能找到 %s 元素"%(self, text))

2.如果代码中已经使用了by_name 的方法,可以替换成 xpath

因为我使用了po的设计模式,所有的基础方法都在Object_base 里面重新封装了的,所以我只需要修改封装方法即可 


Appium 1.5 以上无法使用by_name 定位的解决办法_第1张图片

这是我之前封装的方法,这里使用(By.name)时会报错

修改后:


Appium 1.5 以上无法使用by_name 定位的解决办法_第2张图片

这里先看传入的loc是否是 name 如果是 就重新修改成xpath 方法。

3.转载自博客 http://blog.csdn.net/wuyepiaoxue789/article/details/78411170

通过修改 driver.js 文件来重新使用by_name 功能(由于这里我并没有成功实现,所以仅供大家参考)

你可能感兴趣的:(Appium 1.5 以上无法使用by_name 定位的解决办法)