【问题标题】:How can I use appium to automate browser on android?如何使用 appium 在 android 上自动化浏览器?
【发布时间】:2014-03-25 12:52:58
【问题描述】:

我想在安卓手机上使用appium自动化浏览器,但不知道如何设置功能。

首先,我在我的 Android 设备上的开发者选项中启用了 USB 调试。

其次,adb 运行良好,我可以看到设备 id。

第三,我从Appium for windows启动Appium.exe,用JAVA写了一些代码,但是不知道如何在Android浏览器上设置能力。

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;
        }
    }
}

非常感谢。

【问题讨论】:

    标签: android browser appium


    【解决方案1】:

    使用 Android 驱动程序试试这个代码:

    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();
    }
    

    注意:使用 selenium 版本 2.48.2(最新版本)使 android 驱动程序运行无任何错误。

    【讨论】:

    • 注意:使用selenium v​​ersion 2.48.2(最新版本)使android驱动运行无任何错误。
    【解决方案2】:

    尝试下一个:

    @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);
    }
    

    它应该午餐 Chrome 驱动程序。

    【讨论】:

      【解决方案3】:

      您可以尝试使用此功能类型: CapabilityType.BROWSER_NAME --- "浏览器"

      这段代码在我这边工作:

      @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");
      }
      

      【讨论】:

        【解决方案4】:

        试试这个

                    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));
        

        【讨论】:

          猜你喜欢
          • 2015-03-28
          • 2014-02-20
          • 2021-08-19
          • 2015-12-10
          • 2014-11-28
          • 2014-10-11
          • 2018-03-07
          • 2019-01-02
          • 1970-01-01
          相关资源
          最近更新 更多