我无法访问标记为X的元素。
已经与开发人员进行了交谈,他们说不可能在其上放置id或可访问性标签,他们说这是元素类型https://developer.android.com/reference/android/widget/AutoCompleteTextView。
我会通过x和y位置进行操作,但是如果我使用硬编码数字,它会在具有不同分辨率的不同设备上中断。
如何更有效地定位此元素?
我正在使用appium进行测试自动化,但这对于任何测试自动化框架来说都是一个问题。
图片中使用的工具是uiautomatorviewer。
答案 0 :(得分:1)
您可以对X和Y位置进行操作而无需对值进行硬编码,因为“ X”按钮不具有使用edittext的内置功能,因此它也可以在其他设备上使用,因此android uiautomator将无法访问此元素
这将单击该位置,在这里您需要根据您的位置更改3/4
答案 1 :(得分:0)
您应该尝试使用元素的类。
select t1.column1, t1.column3, t2.column3
from someTable t1, someTable t2
where t1.column1 = t2.column1
and t1.column3 = t2.column3
and t1.rowid <> t2.rowid
如果出现超过1个元素,则可以尝试
driver.findElement(By.className("android.widget.EditText"));
答案 2 :(得分:-1)
您可以使用Touchaction类在editText字段中点击Cross选项。
尝试使用以下代码
// Identify the x and y co-ordinate for EditText field
Point elementLoc = driver.findElement(By.xpath("xpath of edittext field")).getLocation();
int eleX = elementLoc.getX();
int eleY = elementLoc.getY();
// Identify the width and height of the editText field
Dimension elementDimen = driver.findElement(By.xpath("xpath of edittext field")).getSize();
int eleH = elementDimen.getHeight();
int eleW = elementDimen.getWidth();
// Determine the x and y co-ordinates of cross option
int touchX = (int)(eleX + eleW * 0.75D); // 75% from the x co-ordinate of editText field ( x axis position for cross option)
int touchY = (int)(eleY + eleH * 0.5D); // 50 % from the y co-ordinate of editText field (y axis position for cross option)
// Tap on the cross option
TouchAction<?> action = new TouchAction(driver);
action.tap(PointOption.point(touchX, touchY)).release().perform();
在找到交叉期权的确切位置之前,使用touchX和touchY变量的偏移值进行实验。