可以使用 scrollToExact() 方法来滚动屏幕,以便避开覆盖按钮。示例代码如下:
MobileElement elementToClick = driver.findElement(By.id("scrollableList")); MobileElement desiredElement = driver .findElement(MobileBy.AndroidUIAutomator("new UiSelector().text("Desired Element")"));
while (!elementToClick.equals(desiredElement)) { int elementToClickY = elementToClick.getLocation().getY(); int elementToClickHeight = elementToClick.getSize().getHeight(); int screenHeight = driver.manage().window().getSize().getHeight(); int scroll = 0;
if (elementToClickY < 0) { scroll = -(elementToClickY + elementToClickHeight + 5); } else if (elementToClickY + elementToClickHeight > screenHeight) { scroll = desiredElementY - screenHeight + elementToClickHeight + 5; }
driver.swipe(0, elementToClickY + elementToClickHeight, 0, elementToClickY + elementToClickHeight + scroll, 1000);
elementToClick = driver.findElement(By.id("scrollableList")); }
desiredElement.click();
在上述代码中,首先找到可滚动的元素(如滚动列表),然后在 while 循环中使用 swipe() 命令滚动屏幕,检查所需元素是否在视线范围内,直到找到期望的元素,并使用 click() 命令单击该元素。这种方法可以避免被覆盖的按钮,并且可以在屏幕上滚动以寻找需要单击的元素。