How can I use appium to automate browser on androi

2019-04-06 22:32发布

I want to use appium to automate browser on android phone,but I don't know how to set the capability.

First, I have enabled USB debugging on my Android device in the developer options.

Second, adb was working well, i can see the device id.

Third, I started Appium.exe from Appium for windows and writed some code by JAVA, but I don't know how to set the capability on Android browser.

public class Test {
    private WebDriver driver;

    @Before
    public void setUp() throws Exception {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        //------------I don't know how to set the capability------------//
        capabilities.setCapability(CapabilityType.VERSION, "2.3.7");
        capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS");
        //--------------------------------------------------------------//
        driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }

    @Test
    public void testcase_001() throws Exception{
        driver.get("http://www.google.com");
        WebDriverWait wait = new WebDriverWait(driver, 30);
        wait.until(ExpectedConditions.presenceOfElementLocated(By.id("lst-ib")));
        WebElement keyword = driver.findElement(By.name("lst-ib"));
        keyword.sendKeys("appium");
        driver.findElement(By.id("btnK")).click();
        Thread.sleep(5000);
     }

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

    public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen {
        private RemoteTouchScreen touch;
        public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) {
            super(remoteAddress, desiredCapabilities);
            touch = new RemoteTouchScreen(getExecuteMethod());
        }
        public TouchScreen getTouch() {
            return touch;
        }
    }
}

Many thanks.

4条回答
Rolldiameter
2楼-- · 2019-04-06 22:49

Try this

            DesiredCapabilities mobCapabilities = new DesiredCapabilities();

            mobCapabilities.SetCapability(CapabilityType.BrowserName,
                AppConfig.MobileBrowser.Equals("chrome") ? MobileBrowserType.Chrome : MobileBrowserType.Browser);
            mobCapabilities.SetCapability(MobileCapabilityType.DeviceName, AppConfig.DeviceName);
            mobCapabilities.SetCapability(MobileCapabilityType.PlatformName, AppConfig.Platform);
            mobCapabilities.SetCapability(MobileCapabilityType.PlatformVersion, AppConfig.PlatformVersion);

 // init driver
            driver = new AndroidDriver<AndroidElement>(
                new Uri("http://127.0.0.1:4723/wd/hub"),
                mobCapabilities);
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(15));
查看更多
相关推荐>>
3楼-- · 2019-04-06 22:59

Try something as next:

@Before
public void setUp() throws Exception {
    DesiredCapabilities  capabilities = new DesiredCapabilities();
    capabilities.setCapability("device","Android");
    capabilities.setCapability("app", "Chrome");
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
    capabilities.setCapability(CapabilityType.VERSION, "4.3");
    capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS");
    driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

It should lunch Chrome driver.

查看更多
干净又极端
4楼-- · 2019-04-06 23:03

Try this code using Android Driver:

import io.appium.java_client.android.AndroidDriver;

public class Test {
private AndroidDriver;

@Before
public void setUp() throws Exception {
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("deviceName", "MOTO G 2");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "Chrome");
    capabilities.setCapability("platformVersion", "5.0.2");
    capabilities.setCapability("appPackage", "com.android.chrome");
    capabilities.setCapability("appActivity","com.google.android.apps.chrome.ChromeTabbedActivity");
    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

@Test
public void testcase_001() throws Exception{
    driver.get("http://www.google.com");

    WebElement keyword = driver.findElementByName("q");
    keyword.sendKeys("appium");
    driver.findElement(By.id("btnK")).click();
    Thread.sleep(5000);
 }

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

Note: Use selenium version 2.48.2 (latest version) to make the android driver run without any error.

查看更多
甜甜的少女心
5楼-- · 2019-04-06 23:04

You can try with this capability type: CapabilityType.BROWSER_NAME --- "Browser"

This code is working on my end:

@BeforeMethod
public void setUp() throws Exception {
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("deviceName", "Samsung Galaxy S4");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "Browser");
    capabilities.setCapability("platformVersion", "4.4.4");
    capabilities.setCapability(MobileCapabilityType.TAKES_SCREENSHOT, "true");
    driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.get("http://www.google.com");
}
查看更多
登录 后发表回答