2016-07-18 9 views
0

Java言語でAppiumを使用して自動テストを実行しようとしています。しかし、要素にアクセスするには、CSSセレクタを使用して見つけるためにブラウザ上でwebviewを使用します。私の質問は、Java言語でAppiumを使ってwebviewに切り替える方法ですか?私はappiumがセレンをサポートしていることを発見し、driver.switchTo().window("WEBVIEW")を使用することができますが、その事実はありません。今私はインターネット上で見つけたこのコードを使っていますが、スクリプトを実行すると、TestNGは何も失敗したり、成功したり、スキップされたりしませんでした。どんな助け? PS:このフォーラムのcom.xxx.xxxをmyAppsに変更しました。cssセレクタを使用して自動テストを実行する方法Appium java

package com.android.test; 
    import java.net.URL; 
    import java.util.Set; 
    import java.util.concurrent.TimeUnit; 

    import org.junit.Test; 
    import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.remote.CapabilityType; 
    import org.openqa.selenium.remote.DesiredCapabilities; 
    import org.testng.annotations.AfterTest; 
    import org.testng.annotations.BeforeTest; 

    import io.appium.java_client.AppiumDriver; 
    import io.appium.java_client.android.AndroidDriver; 
    import java.net.MalformedURLException; 
    import org.openqa.selenium.WebElement; 
    import org.openqa.selenium.support.ui.ExpectedConditions; 
    import org.openqa.selenium.support.ui.Select; 
    import org.openqa.selenium.support.ui.WebDriverWait; 
    import static org.junit.Assert.assertEquals; 

    public class Login2 { 
     public static AppiumDriver<WebElement> driver; 

     @BeforeTest 
     public void before() throws MalformedURLException, InterruptedException{ 
       DesiredCapabilities capabilities = new DesiredCapabilities(); 
       capabilities.setCapability("deviceName", "192.168.150.101:5555"); 
       capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android"); 
       capabilities.setCapability(CapabilityType.VERSION, "5.1.0"); 
       capabilities.setCapability("platformName", "Android"); 
       capabilities.setCapability("appPackage", "myApps"); 
       capabilities.setCapability("appActivity", "myApps"); 
       driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
       driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 
       Set<String> availableContexts = driver.getContextHandles(); 
       System.out.println("Total No of Context Found After we reach to WebView = "+ availableContexts.size()); 
       for(String context : availableContexts) { 
        if(context.contains("WEBVIEW")){ 
         System.out.println("Context Name is " + context); 
         // 4.3 Call context() method with the id of the context you want to access and change it to WEBVIEW_1 
         //(This puts Appium session into a mode where all commands are interpreted as being intended for automating the web view) 
         driver.context(context); 
         break; 
          } 
         } 
     } 

     @Test 
     public void login() throws InterruptedException{ 
      //Thread.sleep(6000); 
      WebElement log = driver.findElement(By.cssSelector("div[ng-click^='logReg']")); 
      log.click(); 
      driver.context("NATIVE_APP"); 
     } 

     @AfterTest 
     public void after(){ 
      driver.quit(); 
     } 

    } 

これは私が

<div class="background-menu col box-menu loginIcon" ng-click="logReg()"> 
     <img class="menu_icon3" src="img/MenuIcon/blank.png" alt="login"> 
    </div> 

をクリックすることを選択ししようとしている要素である任意の助けをありがとうございました。

答えて

0

Appiumコンソールから出力を投稿できますか?おそらくあなたのアプリはsetWebContentsDebuggingEnabledfalseに設定されています。あなたのアプリが有効になっていることを確認してください。そうしないと、WebViewコンテキストが作成されません。

+0

とにかく、私はwebviewに切り替える別の方法を見つけました。あなたはこれに対する答えを知っていますか? [リンク](http://stackoverflow.com/questions/38452767/cannot-start-a-selendroid-session-because-the-server-apk-does-not-exist)ありがとうございます。アプリがtrueまたはfalseを設定しているかどうかを確認するにはどうすればよいですか?私はそれを作っていないので、私はそれをテストしているだけです。ありがとうございました。 – Jonathan

+0

Appium Inspectorで確認できます。選択された要素のプロパティの下に「コンテキスト」メニューがあります(スクリーンショットの確認 - http://imgur.com/a/RoFZy)。 'WebView'がある場合、あなたのアプリはWebViewデバッグを有効にしています。それ以外の場合は、アプリにアプリを含めるようデベロッパーに依頼する必要があります。 –

+0

私はAppium for Windowsを使用しており、インスペクタにはコンテキストがありません。とにかくAppium for WindowsやMacを使用する必要がありますか?ありがとうございました。 – Jonathan

関連する問題