public class AndroidWebViewTest {
private AppiumDriver<WebElement> driver;
@Before
public void setUp() throws Exception {
// set up appium
File classpathRoot = new File(System.getProperty("user.dir"));
File app = new File(classpathRoot, "../../../apps/selendroid-test-app.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","Android Emulator");
//automationName必須為Appium,或者該參數不填
capabilities.setCapability("automationName","Appium");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", "io.selendroid.testapp");
capabilities.setCapability("appActivity", ".HomeScreenActivity");
driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@After
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void webView() throws InterruptedException {
WebElement button = driver.findElement(By.id("buttonStartWebview"));
button.click();
Thread.sleep(6000);
//擷取目前頁面的所有Context對象,其中就會包含Native和Webview的對象。
Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
System.out.println(contextName);
//周遊擷取下來的context對象,若發現context對象包含WEBVIEW字樣的時候,就切換到該對象下
if (contextName.contains("WEBVIEW")){
driver.context(contextName);
}
}
//然後就是Webview中的操作,webview下的自動化定位方式與Selenium中web的定位是一樣的。
WebElement inputField = driver.findElement(By.id("name_input"));
inputField.sendKeys("Some name");
inputField.submit();
}
}