在进行一个APP测试时,用xpath循环定位一组元素。e=driver.find_elements_by_xpath("//*[contains(@text,'相关推荐')]")
开始能定位到元素,在同一个页面出现弹窗并自动消失后,就定位不到元素了。 在出现弹窗时能,定位返回的结果为空"[ ]",之后再定位就卡住了。 感觉后续的查找都在查找弹窗的内容, 当相同的弹窗再出现时,能定位。返回的结果还是空"[ ]"。 如果不出现那个弹窗,定位就一直等待弹窗出现,不会定位当前页面的xpath。
初步解决方案: ①:在cap中添加 "automationName": "uiautomator2".这样能解决弹窗出现后一直卡住定位不到当前页面的问题。但是现在一直困扰我的问题是:用了这种方法,执行TouchAction(driver).press(x=300,y=1500). move_to(x=300,y=1200).move_to(x=300,y=1000).move_to(x=300,y=500).release().perform()时两个动作之间会有停顿,比如两个move_to动作之间会有0.7秒左右的延时。请大家尝试。我需要一个连贯的滑动动作,却变成一卡一顿的完成滑动动作。(请大神帮忙解决这个问题)(温馨提示:看了一下swipe的实现,原理也是TouchAction,但是swipe不会出现上述卡顿的问题。不完善,希望大神研究。)
②:当上面那个弹窗出现定位不到元素问题出现以后,把APP置于后台再启动回到需要定位的界面就能定位到需要xpath定位的元素。driver.background_app(1),但是这样不太方便啊,不能每次出现都置于后台吧! 希望能帮忙解决,感激不尽!
|