在 Android 应用中使用 Appium 定位元素后,如何水平滑动?
Posted
技术标签:
【中文标题】在 Android 应用中使用 Appium 定位元素后,如何水平滑动?【英文标题】:How can i swipe horizontally after locating an element using Appium in an Android app? 【发布时间】:2016-03-22 07:42:46 【问题描述】:我使用了以下代码,但它不起作用:
int startX = driver.findElement(By.xpath("//*[@class='android.widget.FrameLayout' and @index='1']")).getLocation.getX();
int startY = driver.findElement(By.xpath("//*[@class='android.widget.FrameLayout' and @index='1']")).getLocation.getY();
我得到的错误是:
getLocation cannot be resolved or is not a field
【问题讨论】:
使用Swipe方法刷屏。 【参考方案1】:首先,您应该尝试将位置设为getLocation()
,而不是:.getLocation.getY()
。
其次,您可以使用以下方式实现全方位的滑动/滚动:
TouchAction action = new TouchAction(driver);
int startY = element1.getLocation().getY() + (element1.getSize().getHeight() / 2);
int startX = element1.getLocation().getX() + (element1.getSize().getWidth() / 2);
int endX = element2.getLocation().getX() + (element2.getSize().getWidth() / 2);
int endY = element2.getLocation().getY() + (element2.getSize().getHeight() / 2);
action.press(startX, startY).waitAction(2000).moveTo(endX, endY).release().perform();
【讨论】:
谢谢,但它告诉我在类级别拉@Test Annotation,然后我把它告诉我注释应该在那个方法中!问题出在这行 TouchAction action = new TouchAction(driver);还有 action.press(startX, startY).waitAction(2000).moveTo(endX, endY).release().perform();它告诉我:添加演员阵容 请提供代码片段和具体错误。确保您已导入: import io.appium.java_client.TouchAction;还可以考虑使用页面对象模式:code.google.com/p/selenium/wiki/PageObjects 并在不同的类中编写测试用例,然后从另一个类运行它们(在这里你可以使用@Test Annotation)。 嗨,我如何从右 WebElement 水平滑动到最左 WebElement? 我们可以用窗口大小而不是元素引用来处理这个问题吗? 为了从左向右滑动需要交换startx,starty从press到moveto。 endx 反之亦然,endy 从 moveto 到 press。【参考方案2】:public void horizontalScroll()
size=driver.manage().window().getSize();
int x_start=(int)(size.width*0.60);
int x_end=(int)(size.width*0.30);
int y=130;
driver.swipe(x_start,y,x_end,y,4000);
理解水平滚动的最佳教程 - CLICK HERE
【讨论】:
@anuja Jain:刷卡方法已被弃用,现在不起作用。请参阅此链接以获取更多更新:appium.github.io/java-client/io/appium/java_client/…以上是关于在 Android 应用中使用 Appium 定位元素后,如何水平滑动?的主要内容,如果未能解决你的问题,请参考以下文章
appium应用之“获取元素信息和元素操作”(android)