Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Python/Selenium:元素位置不正确_Android_Python_Selenium_Appium - Fatal编程技术网

Android Python/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

我正在用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”

检查错误的代码:

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轴向下。哦,是的,我的错在那里。等待对这个案子没有帮助。我的猜测与输入法交互有关。不同的输入法产生不同的再现率,但在我的设备上没有一种是足够稳定的。目前,手动坐标计算用作解决方法。