2016-07-18 4 views
0

Я пытаюсь выполнить автоматическое тестирование с использованием Appium на языке Java. Однако для доступа к элементам я использую webview в браузере, чтобы найти с помощью css Selector. Мой вопрос: как переключиться на веб-просмотр с помощью Appium на языке Java? Я нашел, что appium поддерживает селен и может использовать driver.switchTo().window("WEBVIEW"), но факт его нет. Теперь я использую этот код, который я нашел в Интернете, но когда я запускаю скрипт, TestNG не показывал ничего неудачного или преуспел или пропустил, и приложение на устройстве просто открылось, затем закрылось. Любая помощь? PS: Я изменил com.xxx.xxx на myApps для этого форума.Как запустить автоматическое тестирование с помощью css Selector 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? Вероятно, ваше приложение имеет setWebContentsDebuggingEnabled, установленное на false. Убедитесь, что ваше приложение включено, иначе у вас не будет контекста WebView.

+0

В любом случае, я нашел другой способ переключиться на веб-просмотр, вы знаете ответ для этого? [link] (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 для Windows и нет никакого контекста у инспектора. Есть ли все-таки, чтобы увидеть это в Appium для Windows или использовать Mac? Спасибо. – Jonathan

Смежные вопросы