通过android自动化上的坐标获取组件名称
我想使用坐标自动化我的Android应用程序UI。因为测量屏幕中组件的完美位置
我需要结果,如果我发送X
和Y
值,代码应该返回位于给定坐标位置的组件名称(按钮或文本字段等)。
是否可以使用坐标获取组件名称或整个属性? 可能的方法请提供一个很好的例子。请有人帮我这个。
我已构建逻辑并使用给定坐标验证组件。示例代码如下。但是我需要突出显示当前的验证组件,也许它可以像边框颜色或箭头图标一样聚焦在组件上方。
我尝试使用给定代码突出显示该组件,但它不起作用。
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;
}