app弹窗元素无法定位的问题解决思路
问题:Android,appium测试时,popupwindow控件元素无法定位。
背景:在测试一款Android APP时,在商品详情页,点击加入购物车时,会在商品详情页面弹出popupwindow,其中有选择规格的内容。
用uiautomatorviewer.bat定位不了元素,只能选择popupwindow下面一层的元素。找到Android开发,让加了
View contentView = LayoutInflater.from(mContext).inflate(
R.layout.pop_window, null);
contentView.setFocusable(true);
上面红色部分,即增加一行设置焦点的代码,重新打包,问题解决。
uiautomatorviewer.bat定位popupwindow中的元素成功。跑了一下appium,也可以成功操作元素了。
其他解决方案:
解决方法1:相对坐标点定位
def tapAction(driver,m,n):
x1 = driver.get_window_size()['width']
y1 = driver.get_window_size()['height']
xt = int(x1*m)
yt = int(y1*n)
print(xt,yt)
TouchAction(driver).tap(x=xt,y=yt)
sleep(2)
解决方法二:adb命令对相对坐标点定位
def adbClick(driver,m,n):
# L.i('adb shell input tap %d %d' % (dx,dy))
x1 = driver.get_window_size()['width']
y1 = driver.get_window_size()['height']
dx = int(x1*m)
dy = int(y1*n)
os.system('adb shell input tap %d %d' % (dx,dy))
也可以使用adb的input命令对相对坐标点执行输入操作
def adbInput(driver,m,n,msgtext):
x1 = driver.get_window_size()['width']
y1 = driver.get_window_size()["height"]
dx = int(x1*m)
dy = int(y1*n)
os.system("adb shell input text %s" % msgtext)

浙公网安备 33010602011771号