Android Python/Selenium:元素位置不正确
我正在用Python通过Appium/Selenium编写一个Android应用程序测试脚本。 有时,selenium在测试期间报告错误的元素位置,但通过目视检查,实际含量是正确的 应用程序的布局与此类似:Android Python/Selenium:元素位置不正确,android,python,selenium,appium,Android,Python,Selenium,Appium,我正在用Python通过Appium/Selenium编写一个Android应用程序测试脚本。 有时,selenium在测试期间报告错误的元素位置,但通过目视检查,实际含量是正确的 应用程序的布局与此类似: android.widget.LinearLayout[contains(@resource-id,'com.xxx/Iv1')] android.widget.LinearLayout[contains(@resource-id,'com.xxx/Iv2')] 哪个“Iv1”高于“Iv2
android.widget.LinearLayout[contains(@resource-id,'com.xxx/Iv1')]
android.widget.LinearLayout[contains(@resource-id,'com.xxx/Iv2')]
哪个“Iv1”高于“Iv2”
检查错误的代码:
elem = temp['wd'].find_element_by_id("com.xxx/Iv1")
elem_LV = temp['wd'].find_element_by_id('com.xxx/Iv2')
while (elem.location['y'] > elem_LV.location['y']):
logger.debug("e_Hide_Add_Toolbar: Misplace detected. Retry...")
sleep(1)
一旦selenium失控,一秒钟睡眠等待循环的位置总是错误的
我如何从这种情况中恢复过来
================================================
有关此问题的更多背景和信息
线索#1:
这是坐标的调试日志
Nomral
Thu, 03 Mar 2016 18:46:28 - [DEBUG] - script.py[line:87] : elem y: 1008, elem x: 80
Thu, 03 Mar 2016 18:46:28 - [DEBUG] - script.py[line:88] : elem_LV y: 1118, elem_LV x: 120
Abnormal
Thu, 03 Mar 2016 18:50:23 - [DEBUG] - script.py[line:87] : elem y: 1168, elem x: 80
Thu, 03 Mar 2016 18:50:23 - [DEBUG] - script.py[line:88] : elem_LV y: 1118, elem_LV x: 120
异常情况下有160个像素偏移
线索二:
问题是在一个10英寸的安卓5键盘上发现的。
但是,当我试图在另一台设备上仔细检查这个问题时,它在运行Android M的Nexus 7中运行良好。因此,当您引用
elem.location[]
时,它会返回元素左上角的坐标值(elem
)
了解“Iv1”位于“Iv2”上方的点,您可能需要比较它们的x轴坐标。
由于0,0是设备的左上角,x轴向右延伸,y轴向下延伸。
编辑:您的代码将按工作显示:
while (elem.location['y'] > elem_LV.location['y']):
logger.debug("e_Hide_Add_Toolbar: Misplace detected. Retry...")
sleep(1)
在找到元素和代码中的位置之前,请尝试放置一个
等待
。(以避免在加载时获得坐标)谢谢您的评论。然而,在坐标系中,X轴向右,Y轴向下。哦,是的,我的错在那里。等待对这个案子没有帮助。我的猜测与输入法交互有关。不同的输入法产生不同的再现率,但在我的设备上没有一种是足够稳定的。目前,手动坐标计算用作解决方法。