下にスクロールして設定の要素をクリックしようとしていますが、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();
私もこの方法で試しましたが、スクロールしていません...設定が開き、それだけです
以下のコードスニペットを使用してスクロールできます。
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の値を変更できます。私の場合は必要に応じて値を使用しました。
//メソッド名scrollToまたは任意の名前を作成します。以下のコードを使用して、スクロールするテキストのパラメーターを取得します。
public void scrollTo(String text)
{
driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\""+text+"\").instance(0))");
}
「機能」テキストは、表示テキストまたはコンテンツの説明です
その表示テキストの場合:
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();
これは動作します
driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView("+ "new UiSelector().text(\"_TAGS_\"));");
ScrollTo()
関数の場合、以下のメソッドは非常にうまく機能しました。
_driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView("+ "new UiSelector().text(\"_input your text name here_\"));").click();
_
上記のメソッドを使用してみてください。これにより、scrollTo()
関数に関する問題が解決するはずです。
Javaスクリプトにwdドライバーを使用すると、次のスクロール方法が機能しました
await driver.execute('mobile: scroll', {'direction': 'down'});
以下は、Appium Java 6を超えるクライアントバージョンを使用している人々のために私が見つけた最良の1行のソリューションです-
driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\""+text+"\").instance(0))"));