如何使用appium在Android应用程序中滚动表单

时间:2016-08-30 09:20:23

标签: android appium

我正在测试Android应用程序

  1. 我可以将表格填写到设备上可见的某些字段
  2. 但现在我想滚动表单并想填写其他字段并点击最后的提交按钮。
  3. 我被困在这里请帮助。

6 个答案:

答案 0 :(得分:2)

我的例子来自python,但它适用于Java,只需使用java语法来查找

之类的元素
driver.find_element_by_android_uiautomator('new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains("**/Put some text of scroll screen/**").instance(0))')

或使用java语法

driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\"**/Put some text of scroll screen/**\").instance(0))")

答案 1 :(得分:0)

将所有内容包装在ScrollView

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <!-- Here you put the rest of your current view-->
</ScrollView>

ScrollView只能包含一个项目(只有一个布局作为子项)...所以如果你有这样的东西:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <!-- bla bla bla-->
</LinearLayout>

您必须将其更改为:

<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
        <!-- bla bla bla-->
    </LinearLayout>
</ScrollView>

作为参考,你可以raed ..

https://developer.android.com/reference/android/widget/ScrollView.html

或简单的ScrollView示例......

http://stacktips.com/tutorials/android/android-scrollview-example

答案 2 :(得分:0)

在使用appium测试您的应用时,请使用以下代码垂直滑动:

Dimension size = driver.manage().window().getSize(); 
int starty = (int) (size.height * 0.80); 
//Find endy point which is at top side of screen. 
int endy = (int) (size.height * 0.20);
//int endy = (int) (size.height * 0.10);
//Find horizontal point where you wants to swipe. It is in middle of screen width. 
int startx = size.width / 2; 

//Swipe from Bottom to Top. 
driver.swipe(startx, starty, startx, endy, 3000); 

这会垂直向下滑动你的屏幕。

你也可以尝试这一行滚动:

// Scroll till element which contains Tabs text.
driver.scrollTo("Tabs");

当你面对你的Android驱动程序时,声明如下:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","fevicename");
capabilities.setCapability("platformName","Android");
//add more according to your requirement
public AppiumDriver<WebElement> driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

答案 3 :(得分:0)

driver.scrollTo("Tabs");

不再是

在java客户端4.0版本中,不推荐使用scrollTo和scrollToExact。 您必须使用driver.swipe()

答案 4 :(得分:0)

//创建一个方法名称scrollTo或您选择的任何名称,并使用下面提到的代码,它将使用文本参数进行滚动:

public void scrollTo(字符串文本) {
driver.findElementByAndroidUIAutomator(“ new UiScrollable(new UiSelector()。scrollable(true).instance(0))。scrollIntoView(new UiSelector()。textContains(\”“ + text +” \“)。instance(0))”) ; }

答案 5 :(得分:0)

我写了一个代码来按方向滑动表格,它对我有用,对您有帮助。

下面是上下滑动的代码

if (Direction.equalsIgnoreCase("Up")) {
            startX = size.width / 2;
            startY = ((int) (size.height * 0.80) - Offset);
            endX   = startX;
            endY   = (int) (size.height * 0.20);
        }
        //down
        else if(Direction.equalsIgnoreCase("down")) {
            startX = size.width / 2;
            startY = ((int) (size.height * 0.20) + Offset);
            endX   = startX;
            endY   = (int) (size.height * 0.80);
        }

pointOption = new PointOption();

new TouchAction<>(getDriver()).press(pointOption.point(startX, startY)).waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000)))
                .moveTo(pointOption.point(endX, endY)).release().perform();