2016-12-08 3 views
1

Я пытаюсь установить настройку тестирования Appium с Java для тестирования на Android. Чтобы проверить мои элементы, я использую AndroidUiAutomator. В UI Automator Viewer я вижу, что распространилась метка доступности (см. Прикрепленное изображение). Когда я использую findElement (By.name | By.AccessibilityId | и т. Д., Он обычно просто истекает время, и консоль терминала сервера Appium должна быть перезапущена для запуска теста. Я получаю аналогичные результаты с помощью FindByXPath. Я пробовал ждать, используя тайм-аут и waitdriver, чтобы убедитесь, что загружаются элементы, но это было напрасно я пытался почти все перечисленные в коде нижеAppium не может найти элемент по содержанию-description/accessibilityID

 /** 
     * Created by appium on 12/6/16. 
     */ 
    import io.appium.java_client.AppiumDriver; 
    import io.appium.java_client.android.AndroidDriver; 
    import io.appium.java_client.MobileElement; 
    import io.appium.java_client.android.AndroidElement; 
    import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.openqa.selenium.WebDriver; 
import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.openqa.selenium.support.ui.Select; 
import java.util.*; 



import java.net.URL; 

public class FirstTest { 
    AndroidDriver driver; 

    @Before 
    public void setUp() throws Exception { 

     DesiredCapabilities capabilities = new DesiredCapabilities(); 


     capabilities.setCapability("deviceName", "Android Emulator"); 
     capabilities.setCapability("BROWSER_NAME", "Android"); 
     capabilities.setCapability("app", apkloc); 


     capabilities.setCapability("VERSION", "5.0.0"); 
     capabilities.setCapability("platformName", "Android"); 

     driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
     // Thread.sleep(100); 
     //driver.manage().timeouts().implicitlyWait(100000, TimeUnit.SECONDS); 

     System.out.println("driver1=" + driver); 


    } 




    @Test 
    public void login() throws InterruptedException { 
     try { 
      Thread.sleep(10000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     MobileElement mo = (MobileElement) driver.findElementByAndroidUIAutomator("new UiSelector().text(\"username\")"); 
     WebDriverWait wait = new WebDriverWait(driver, 1000); 
     System.out.println("driver4=" + driver); 
     WebElement element = driver.findElement(By.xpath("//EditText[@text='username']")); 
     WebElement elly = driver.findElementByXPath("//[@id=wutitdo]"); 
     System.out.println("olly-mint: "+elly); 

     WebElement element2 = driver.findElementByName("password"); 
     //WebElement element3 = driver.findElementByXPath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.webkit.WebView[1]/android.view.View[4]"); 
     //WebElement element4 = driver.findElementByName(""); 

     //WebElement element3 = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.webkit.WebView[1]/android.view.View[4]"))); 
     // WebElement exp = (WebElement) (new WebDriverWait(driver, 15)).until(ExpectedConditions.presenceOfElementLocated(By.name("Trip"))); 
     System.out.println("dr" + driver); 
     //element.click(); 
     //WebDriverWait wait = new WebDriverWait(driver, 10); 
     // element2.click(); 
     Thread.sleep(1000); 
     //element3.click(); 

     //WebElement current = (new WebDriverWait(driver,100)).until(ExpectedConditions.presenceOfElementLocated(By.name("username"))); 
     //current.sendKeys(); 
     // WebElement dropdown = driver.findElement(By.xpath("//*[@id='wrapper']/table[2]/tbody/tr[24]/td[3]/select[1]")); 

     //WebElement dropdown = driver.findElement(By.xpath("//*[@id='wrapper']/table[2]/tbody/tr[24]/td[3]/select[1]")); 


     //Select listbox = new Select(driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.webkit.WebView[1]/android.view.View[1]/android.view.View[0]"))); 
     //listbox.selectByIndex(0); 
     //listbox.selectByIndex(3); 
     //driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.webkit.WebView[1]/android.view.View[1]/android.view.View[3]")).click(); 
     //Thread.sleep(2000); 

     //element4.click(); 
     //Thread.sleep(1000); 
    } 



    @After 
    public void tearDown() throws Exception { 


     System.out.println("driver3=" + driver); 
     driver.quit(); 


    } 

} 


[![enter image description here][1]][1] 


    [1]: https://i.stack.imgur.com/JPegT.png 
+0

что версия Appium вы используете? –

+0

настоящее время я использую 1.6.2 –

ответ

0

чтобы использовать находку описанием контента на Android, вы должны использовать что-то подобное..:

public WebElement getByContentDescription(String string){ 
    return driver.findElement(By.ByXPath("//*[@content-desc='"+string+"']"); 
} 
+0

Я попытался это, но он держит дает g мне ошибка и сказать мне, что он ожидает, что вызов метода на ByXPath –

+0

вы можете публиковать журналы с консоли appium? потому что это работает на моем 1.5.x, havent проверено на 1.6.2 еще –

+0

Информация: Использование javac 1.8.0_111 для компиляции java-источников Информация: java: Ошибки произошли при компиляции модуля 'appiumTest' Информация: 12/8/16, 1:13 PM - Компиляция завершена с 1 ошибкой и 0 предупреждениями в 2 с 385 мс /Users/appium/IdeaProjects/appiumTest/src/FirstTest.java Ошибка: (33, 37) java: не удается найти символ символ: метод ByXPath (java.lang.String) местоположение: class org.openqa.selenium.By Это то, что я получаю, когда пытаюсь запустить опубликованную функцию. Он даже не запустится. Однако, когда я делаю findByXPath, он дает мне этот вывод в терминале –

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