web-dev-qa-db-ja.com

scrollToが機能していないため、Appiumを使用して特定の要素をクリックするために下にスクロールする方法

下にスクロールして設定の要素をクリックしようとしていますが、scrollToが機能していないため、続行できません。

package Test1;
import io.appium.Java_client.AppiumDriver;
import io.appium.Java_client.TouchAction;
import io.appium.Java_client.Android.AndroidDriver;
import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject;

import org.junit.After;
import org.junit.Before;
import org.openqa.Selenium.By;

import org.openqa.Selenium.Dimension;
import org.openqa.Selenium.Point;
import org.openqa.Selenium.WebElement;
import org.openqa.Selenium.remote.DesiredCapabilities;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import Java.io.File;
import Java.net.URL;
public class MobileFindJavaTest {
private AppiumDriver<WebElement> driver;

@BeforeMethod
 @Test
public void setUp() throws Exception {
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "/Apps/slide/");
File app = new File(appDir, "ApiDemos-debug.apk");

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","BECUPJTWGA7HAQQK");
capabilities.setCapability("platformVersion", "5");

capabilities.setCapability("appPackage", "com.Android.settings");
capabilities.setCapability("appActivity", ".Settings");
driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), c         Capabilities);


    //driver.scrollTo("Views");
    TouchAction touchAction4 = new TouchAction(driver);
    touchAction4.press(30,40).moveTo(89,51).release();
    driver.performTouchAction(touchAction4);
    System.out.println("gaurav");
    driver.findElementByName("Feature").click();

}

}

driver.scrollToはサポートされていないことを示しています。クリックしたい要素が画面にないため、下にスクロールしてクリックする方法を表示します。スクロールする必要があります。

MobileElement radioGroup = (MobileElement) wd

            .findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()"

            + ".resourceId(\"com.Android.settings:id/title\")).scrollIntoView("

            + "new UiSelector().text(\"Feature\"));");
            radioGroup.click();

私もこの方法で試しましたが、スクロールしていません...設定が開き、それだけです

5
gaurav pandey

以下のコードスニペットを使用してスクロールできます。

public void scroll() {
    Dimension dimensions = driver.manage().window().getSize();
    int Startpoint = (int) (dimensions.getHeight() * 0.5);
    int scrollEnd = (int) (dimensions.getHeight() * 0.5);
    driver.swipe(200, Startpoint,200,scrollEnd,2000); 
}

このメソッドを呼び出すことができる条件を設定できます。条件が満たされると、スクロールが停止し、目的のアクションを実行できます。何かのようなもの:

while(condition){
    scroll();
}

追伸:必要に応じて0.5の値を変更できます。私の場合は必要に応じて値を使用しました。

5
Abhinav

//メソッド名scrollToまたは任意の名前を作成します。以下のコードを使用して、スクロールするテキストのパラメーターを取得します。

public void scrollTo(String text)
{                
driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\""+text+"\").instance(0))");
}
2
shiv

「機能」テキストは、表示テキストまたはコンテンツの説明です

その表示テキストの場合:

MobileElement radioGroup = (MobileElement) wd

.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()"

+ ".resourceId(\"<listview_id>\")).scrollIntoView("

+ "new UiSelector().text(\"Feature\"));");
radioGroup.click();

これにより、「機能」テキストが表示される場所までスクロールし、「機能」テキストをクリックします。しかし、私が説明する必要があることの1つは、ボタンやテキストなどではなく、スクロール機能が実装されているビューでのみスクロールできることです。

その内容の説明の場合:

wd.scrollToExact("Feature")

詳細については、このビデオを確認してください:

https://www.youtube.com/watch?v=bT3tqaLNn-Y

テキストをクリックします。

MobileElement textLocartor = (MobileElement) wd

.findElementByAndroidUIAutomator("new UiSelector().text(\"<text_value>\")");

textLocartor.click();
0
Mani

これは動作します

 driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView("+ "new UiSelector().text(\"_TAGS_\"));");
0
Megha Hulage

ScrollTo()関数の場合、以下のメソッドは非常にうまく機能しました。

_driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView("+ "new UiSelector().text(\"_input your text name here_\"));").click();
_

上記のメソッドを使用してみてください。これにより、scrollTo()関数に関する問題が解決するはずです。

0
Star

Javaスクリプトにwdドライバーを使用すると、次のスクロール方法が機能しました

await driver.execute('mobile: scroll', {'direction': 'down'});
0
Daniel Raouf

以下は、Appium Java 6を超えるクライアントバージョンを使用している人々のために私が見つけた最良の1行のソリューションです-

driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\""+text+"\").instance(0))"));
0
Dnyanesh M