找不到android AutoCompleteTextView元素

时间:2019-02-15 08:55:52

标签: android mobile automated-tests appium uiautomatorviewer

我无法访问标记为X的元素。

已经与开发人员进行了交谈,他们说不可能在其上放置id或可访问性标签,他们说这是元素类型https://developer.android.com/reference/android/widget/AutoCompleteTextView

我会通过x和y位置进行操作,但是如果我使用硬编码数字,它会在具有不同分辨率的不同设备上中断。

如何更有效地定位此元素?

我正在使用appium进行测试自动化,但这对于任何测试自动化框架来说都是一个问题。

图片中使用的工具是uiautomatorviewer。

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以对X和Y位置进行操作而无需对值进行硬编码,因为“ X”按钮不具有使用edittext的内置功能,因此它也可以在其他设备上使用,因此android uiautomator将无法访问此元素

  1. 获取EditText的长度
  2. 获取X和Y
  3. 通过(X,Y / 2的3/4)的触摸动作传递值

这将单击该位置,在这里您需要根据您的位置更改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变量的偏移值进行实验。