PO模式封装遇到的大坑
背景:PageFactory.initElements(new AppiumFieldDecorator(driver), this);这句这可以让你使用注释来抓取UI元素,在单个Page下定位使用是没有问题,但是在实例化多个Page页面时候,出现报错Can’t locate an element by this strategy: Locator map:
- native content:
1、思路
1、PageFactory.initElements(new AppiumFieldDecorator(driver), this);是不是不支持多个page类同时使用注释抓取UI元素?
2、还是PageFactory.initElements(new AppiumFieldDecorator(driver), this);位置错了?试着不放在基类的构造函数下,放在每个PAGE的构造方法中(网上没有实例,纯属急了乱撞)
2、柳暗花明
终于机缘巧合,重新从0开始编写脚本,一步一步debug,发现问题所在:其实通过PageFactory.initElements(new AppiumFieldDecorator(driver), this);已经实例元素(抓取)成功了,只是在点击click()元素时候,调用的是基类中封装自定义的click()方法,里边有两步,先调用元素原生的click()方法,然后调用元素的toString()方法。
解决:元素调用原生的click()方法后,后边不要再调用该元素的其他方法。不然会出现报错(诡异)