2016-05-27 11 views
0

問題:iOSを使用した自動化Appiumを使用している実際のデバイスは、現在のページにない特定の要素までスクロールし、その要素を選択します./clickをクリックします。iOS - 実際のデバイス - appiumスクロール:特定の要素にスクロールしてクリックする必要があります。

は、これまでに使用される:

はscrollTo( "テキスト")とscrollToexact( "テキスト")を使用
  • - これは、Javaクライアントで今廃止予定されていることを知るようになりました。ちょうどそれが本当であることを確認したいですか?

    • は、以下を使用しようとしないが、それでも運

      MobileElementスライダー=ドライバ .findElement(MobileBy .IosUIAutomation(やった "tableViews()[0]" +」.scrollToElementWithPredicate( \ "name CONTAINS 'スライダー' \") ")); assertEquals(slider.getAttribute( "name")、 "Sliders");

いくつかのいずれかが、私はこれを解決するのに役立つ可能性があり、後に同様のアンドロイドのためのスクロールをしたいと思っ、まだ試していない場合には役立つだろう。以下は

iは、様々な技術が、まだありません成功を使用しているコードで、コードは、アプリを起動しますが、任意の要素をスクロールして選択しない実行されます。

import java.io.File; 

import java.net.URL; 

import java.util.HashMap; 

import java.util.concurrent.TimeUnit; 



import org.junit.AfterClass; 

import org.openqa.selenium.By; 

import org.openqa.selenium.JavascriptExecutor; 

import org.openqa.selenium.WebElement; 

import org.openqa.selenium.remote.CapabilityType; 

import org.openqa.selenium.remote.DesiredCapabilities; 



import io.appium.java_client.MobileBy; 

import io.appium.java_client.MobileElement; 

import io.appium.java_client.ios.IOSDriver; 

import io.appium.java_client.ios.IOSElement; 



import org.testng.annotations.BeforeClass; 

import org.testng.annotations.Test; 



public class testfour { 



public static IOSDriver driver; 


@BeforeClass 

public static void setUpBeforeClass() throws Exception { 



DesiredCapabilities capabilities = new DesiredCapabilities(); 

//capabilities.setCapability("noReset", true); 

capabilities.setCapability("platformName", "iOS"); 

capabilities.setCapability("deviceName","iPhone_6"); 

capabilities.setCapability("udid", "840384833537f40d011032eaaf20a53705a451ce"); 

capabilities.setCapability("BROWSER_NAME", "iOS"); 

capabilities.setCapability(CapabilityType.VERSION, "9.2.1"); 

capabilities.setCapability(CapabilityType.PLATFORM, "MAC"); 


capabilities.setCapability("autoAcceptAlerts", true); 

    capabilities.setCapability("autoAcceptAlerts", true); 


    driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 

    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

    } 



    @Test 

    public void test() throws InterruptedException { 


    System.out.println("TEST STARTED"); 


    //Make 

    driver.findElementByXPath("//UIAApplication[1]/UIAWindow[1]/UIAScrollView[1]/UIATableView[1]/UIATableCell[6]/UIAStaticText[1]").click(); 

    System.out.println("TEST STARTED6 MAKE"); 

    //Select Audi and model a8 

driver.findElementByXPath("//UIAApplication[1]/UIAWindow[1]/UIATableView[2]/UIATableCell[8]/UIAStaticText[1]").click(); 

    System.out.println("TEST STARTED5 AUDI"); 

driver.findElementByXPath("//UIAApplication[1]/UIAWindow[1]/UIAScrollView[1]/UIATableView[1]/UIATableCell[8]/UIAStaticText[2]").click(); 

    System.out.println("TEST STARTED4 MODEL"); 

//driver.findElementByXPath("//UIAApplication[1]/UIAWindow[1]/UIATableView[2]/UIATableCell[17]/UIAStaticText[1]").click(); 

    System.out.println("TEST STARTED3"); 

    //String Str = "A8"; 

     System.out.println("TEST STARTED2"); 



    //MobileElement slider = (MobileElement) driver.findElement(MobileBy.IosUIAutomation(".tableViews()[2]"+ ".scrollToElementWithPredicate(\"name CONTAINS 'Slider'\")")); 

    MobileElement slider = (MobileElement) driver.findElement(MobileBy.IosUIAutomation("//UIAApplication[1]/UIAWindow[1]/UIATableView[2]/UIATableCell[17]"+ ".scrollToElementWithPredicate(\"name CONTAINS 'A8'\")")); 

    System.out.println("TEST STARTED1"); 

    assertEquals(slider.getAttribute("A8"), "Sliders"); 

    System.out.println("TEST STARTED0"); 


    // MobileElement table = (MobileElement) driver.findElement(MobileBy.IosUIAutomation(".tableViews()[0]")); 

    // MobileElement slider = (MobileElement) table.findElement(MobileBy.IosUIAutomation(".scrollToElementWithPredicate(\"name CONTAINS 'Slider'\")")); 

// assertEquals(slider.getAttribute("name"), "Sliders"); 



    //driver.findElementByIosUIAutomation(".scrollToElementWithName(\""+ Str + "\")").click(); 

    //WebElement tableView = driver.findElementByIosUIAutomation(".tableViews() [2]"); 

    //((IOSElement) tableView).scrollTo("A8"); 

    //((IOSElement) tableView).scrollTo("A8").click(); 


    System.out.println("TEST STARTED1"); 


    //driver.execute("mobile: scroll", [{direction: 'down',  driver.findElementByXPath: ("//UIAApplication[1]/UIAWindow[1]/UIATableView[2]/UIATableCell[17]/UIAStaticText[1]"}]); 

    //driver.scrollTo("A8").click(); 


    //JavascriptExecutor jes = (JavascriptExecutor) driver; 

    //HashMap<String, String> scrollObject = new HashMap<String, String>(); 

    //scrollObject.put("direction", "down"); 

    //scrollObject.put("element", (driver.findElementByXPath("//UIAApplication[1]/UIAWindow[1]/UIATableView[2]/UIATableCell[17]/UIAStaticText[1]"))); 

    //jes.executeScript("mobile: scroll", scrollObject); 

    //jes.executeScript(arg0, arg1) 

    //driver.swipe(startx, starty, endx, endy, duration); 

    //driver.switchTo() 

    //jes.executeScript("arguments[0].scrollIntoView(true);", driver.findElementByXPath("//UIAApplication[1]/UIAWindow[1]/UIATableView[2]/UIATableCell[17]/UIAStaticText[1]")); 


      //driver.findElementByXPath("//UIAApplication[1]/UIAWindow[1]/UIAButton[7]").click(); 

    // driver.scrollToExact(text) 

    // driver.scrollTo("//UIAApplication[1]/UIAWindow[1]/UIAButton[7]").click(); 



    //Select Model000 

    driver.findElement(By.linkText("All Models")).click();  

    driver.findElement(By.linkText("AVALON")).click(); 

    //Click on Search button 

    driver.findElement(By.id("search_btn")).click();  

    // Click on the Search Alert Bar 

    driver.findElement(By.id("switchButton")).click();    

    //ex: for content-desc //Click on the Back button and navigate to home page 

    driver.findElement(By.name("Navigate up")).click(); 

    //Now click on the Menu in the home page 

    driver.findElement(By.name("Navigate up")).click();   

    //Click on the Search Search under the menu item 

    driver.findElementByLinkText("Saved Searches").click();  

    //get the text 

    String text = driver.findElement(By.id("name_tv")).getText(); 

    System.out.println("Actual Text:"+text); 


    System.out.println("Test has been completed"); 

    } 



    private void assertEquals(String attribute, String string) { 

    // TODO Auto-generated method stub 


} 



    @AfterClass 

    public void tearDown() 

    { 

    driver.quit(); 

    } 

     } 
+0

ようこそStackoverflow。詳細については、ここで説明するように質問が完了していることを確認してください。http://stackoverflow.com/help/mcve完全な質問については、より早く、より良い回答を得ることができます。 – tfv

+0

@All、これに関する提案はありますか?まだこの問題で立ち往生しています。いくつかの助けを楽しみにして –

答えて

0

が、これは古い実現が、出会いましたそれは別の問題を捜し、私が助けることができると思った。

私がここで行うことは、Appiumの "swipe"の使用です。

まず、私の画面のサイズを取得します。 寸法のサイズ= driver.manage()。window()。getSize();

次に、画面をスワイプします。 driver.swipe(size.width/3、(int)(size.height * 0.8)、size.width/3、(int)(size.height * 0.8) - 200,300);

スワイプした後、返す要素を探すブールメソッドを呼び出します。 return driver.findElement(Bylocator).isDisplayed();

私はこのスワイプアクション/ isDisplayedチェックをFluentWaitでラップしましたが、何らかの種類のタイムアウト条件とisDisplayedチェックで単純なwhileループが機能します。

要素をスワイプして見つけた後、簡単なクリックコールでリクエストが完了します。 (注:このプロセスはiOSとAndroid用に使用されるため、両方のプラットフォームで動作するはずです)

TL; DR - 要素が表示されているかどうかを確認します。そうでない場合は、スワイプしてもう一度確認してください。要素が見つかるか、ループタイムアウトヒットになるまで、あなたの選択したループでラップします。

関連する問題