如何使用appium在android中查找webview中的元素

时间:2017-12-08 19:22:53

标签: android-webview appium hybrid-mobile-app android-testing appium-android

我是自动化测试的新手。我正在尝试使用appium在Android应用中找到webview中的元素。 以下是我正在使用的代码,但我无法使用其ID

找到说 div
private AppiumDriver<WebElement> driver;

@Before
public void setUp() throws Exception {
    // set up appium


}
@After
public void tearDown() throws Exception {
    driver.quit();
}

@Test
public void webView() throws InterruptedException {

     DesiredCapabilities capabilities = new DesiredCapabilities();
     capabilities.setCapability("deviceName","Android Emulator");

     capabilities.setCapability("appPackage", "com.hokucampusaffairs");
     capabilities.setCapability("appActivity", "com.mybeeps.DashboardActivity");
     try {
        driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Thread.sleep(6000);
   Set<String> contextNames = driver.getContextHandles();
    for (String contextName : contextNames) {
      System.out.println(contextName);
      if (contextName.contains("WEBVIEW")){
        driver.context(contextName);
      }
    }
 String pagesource=   driver.getPageSource();
 String  url=   driver.getCurrentUrl();
 try {
    WebElement inputField = **driver.findElement(By.id("top-container"));**
    inputField.click();
 }
 catch(Exception e)
 {
     e.printStackTrace();
 }

}

粗体代码不是使用其id找到div。此外,findelementbyTag仅查找父元素。

我正在使用最新版本的appium / Android sdk / java 1.8

1 个答案:

答案 0 :(得分:0)

异常为您提供答案 - 找不到id='top-container'

的元素
  1. 确保将驱动程序切换为webview
  2. 尝试其他定位策略,例如Xpath的
  3. 对于webview检查,您可以使用chrome dev工具:https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews