【发布时间】:2017-04-24 00:32:03
【问题描述】:
我一直在尝试使用 Java 进行 Appium 测试设置以在 Android 上进行测试。为了验证我的元素,我一直在使用 AndroidUiAutomator。在 UI Automator Viewer 中,我可以看到无障碍标签已被传播(见附图)。当我使用 findElement(By.name|By.AccessibilityId|etc 它通常只是超时并且必须重新启动 Appium 服务器终端控制台才能运行测试。我使用 FindByXPath 得到了类似的结果。我尝试使用超时和 waitdriver 等待确保元素已加载,但无济于事。我已经尝试了下面代码中列出的几乎所有内容。
/**
* 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
【问题讨论】:
-
您使用的 Appium 版本是什么?
-
我目前使用的是 1.6.2
-
您可以从 uiauomatorviewer 屏幕发布元素详细信息吗?