通过android自动化上的坐标获取组件名称

时间:2016-11-29 12:51:50

标签: java android selenium appium

通过android自动化上的坐标获取组件名称

我想使用坐标自动化我的Android应用程序UI。因为测量屏幕中组件的完美位置 我需要结果,如果我发送XY值,代码应该返回位于给定坐标位置的组件名称(按钮或文本字段等)。

是否可以使用坐标获取组件名称或整个属性? 可能的方法请提供一个很好的例子。请有人帮我这个。

我已构建逻辑并使用给定坐标验证组件。示例代码如下。但是我需要突出显示当前的验证组件,也许它可以像边框颜色或箭头图标一样聚焦在组件上方。

我尝试使用给定代码突出显示该组件,但它不起作用。

private static void highlightElement(WebElement element,RemoteWebDriver driver){

driver = (RemoteWebDriver) driver;
for (int i = 0; i < 4; i++) {

JavascriptExecutor js = (JavascriptExecutor) driver; 

js. executeScript("arguments[0].setAttribute('style', arguments[1]);",
element, "color: yellow; border: 2px solid yellow;");

js.executeScript("arguments[0].setAttribute('style', arguments[1]);"
, element, "");

}

} 请帮忙。

示例代码:

private static String verifyGivenComponentCoordinates(by elementByIdentifier,AndroidDriver driver,String input){     String coordinateStatus = null;

try{
    WebElement element = driver.findElement(elementByIdentifier);

    Point location = element.getLocation();
    int startingXCoordinate = location.getX();
    int startingYCoordinate = location.getY();
    String endingcoordinate = element.getSize().toString();

    endingcoordinate = endingcoordinate.replace("(", "").replace(")", "");

    String[] endingCoordinateArray = endingcoordinate.split(",");
    int endingXCoordinate = startingXCoordinate+Integer.parseInt(endingCoordinateArray[0].trim());
    int endingYCoordinate = startingYCoordinate+Integer.parseInt(endingCoordinateArray[1].trim());

    String startingCoordinateValue = "["+startingXCoordinate+","+startingYCoordinate+"]";
    String endingCoordinateValue = "["+endingXCoordinate+","+endingYCoordinate+"]";

    System.out.println("X coordinate value  ===============> "+startingXCoordinate);
    System.out.println("Y coordinate value  ===============> "+startingYCoordinate);
    System.out.println("Dimention coordinate value  ===============> "+element.getSize());
    System.out.println("Starting Coordinate value  ===============> "+startingCoordinateValue);
    System.out.println("Starting Coordinate value  ===============> "+endingCoordinateValue);

    String caluculatedComponentCoordinate = startingCoordinateValue+endingCoordinateValue;

    System.out.println("Calculated component coordinates =========> "+caluculatedComponentCoordinate);
    if(caluculatedComponentCoordinate.equals(input)){
        System.out.println("Given coordinates matching");
        return coordinateStatus;
    }else{
        System.out.println("Given coordinates does't matching");
        return CommonConstant.COMPONENT_NOT_DISPLAYED;
    }

}catch(Exception e){
    e.printStackTrace();
}

return coordinateStatus;

}

0 个答案:

没有答案