使用 Appium 脚本自动化 android 模拟器和浏览器

Posted

技术标签:

【中文标题】使用 Appium 脚本自动化 android 模拟器和浏览器【英文标题】:Automating android emulator and browser using Appium script 【发布时间】:2015-12-10 08:30:54 【问题描述】:

使用 appium 在 android 模拟器上执行自动化测试。模拟器中的浏览器在通过代码自动化时未打开。我已经在下面复制了我的代码,请查看并帮助我。提前致谢

package report;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;  

import javax.swing.JOptionPane;

import org.openqa.selenium.By;  
import org.openqa.selenium.WebDriver;  
import org.openqa.selenium.WebElement;  
import org.openqa.selenium.firefox.FirefoxDriver;  
import org.openqa.selenium.firefox.FirefoxProfile;  
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.BeforeTest;  
import org.testng.annotations.Test;  


public class emulator 
WebDriver driver;

public void setUp() throws MalformedURLException 

DesiredCapabilities capabilities= new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME,"browser");
capabilities.setCapability(CapabilityType.VERSION,"4.4");
capabilities.setCapability(CapabilityType.PLATFORM,"windows");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("devices","Android");
capabilities.setCapability("avd","nexus");
capabilities.setCapability("deviceName","");
capabilities.setCapability("appPackage", "com.android.browser");
capabilities.setCapability("appActivity",    "com.android.browser.BrowserActivity");
driver=new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);




public void cal()
driver.get("http://www.google.com");


public static void main(String[] args) throws MalformedURLException

emulator a=new emulator();
a.setUp();
a.cal();           


【问题讨论】:

您遇到了什么错误或异常? 我收到此错误“操作在超时到期之前未完成。(原始错误:超时:Adb 命令在 30 秒后超时” 是的,这是因为默认的 android 模拟器需要太多时间来打开和加载。请尝试使用真机或 Genymotion 模拟器.. 我可以自动打开我的模拟器,但脚本无法按照我的要求启动,即浏览器没有打开。 正如我所说,默认模拟器太慢了。 【参考方案1】:

锁定屏幕将停用我们程序的其他脚本。所以我尝试手动打开模拟器并禁用锁定屏幕(设置->安全->无)。然后关闭模拟器。现在自动打开模拟器并运行脚本。

public void setUp(int p) throws MalformedURLException 
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "browser");
    capabilities.setCapability(CapabilityType.VERSION, "");
    capabilities.setCapability(CapabilityType.PLATFORM, "windows");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("udid", "emulator-" + p);
    capabilities.setCapability("devices", "Android");
    capabilities.setCapability("avd", "Nexus7");
    capabilities.setCapability("deviceName", "");
    capabilities.setCapability("appPackage", "com.android.browser");
    capabilities.setCapability("appActivity", "com.android.browser.BrowserActivity");
    driver = new RemoteWebDriver(new URL("http://127.0.0.1:" + this.port + "/wd/hub"), 
             capabilities);

【讨论】:

【参考方案2】:

在移动浏览器上工作时,我们不需要传递所有上述所需的功能,如 apppackage 和 appactivitiy。您可以查看所需能力的详细信息@http://qaautomationcafe.blogspot.in/2015/09/mobile-web-automation-using-appium.html

【讨论】:

以上是关于使用 Appium 脚本自动化 android 模拟器和浏览器的主要内容,如果未能解决你的问题,请参考以下文章

appium + python编写自动化脚本

Appium 自动化测试-- 脚本开发:官方demo演示 android_contacts.py

Mac + Appium + Java1.8学习之Android模拟器自动化测试脚本开发以及简易例子

appium简介

Appium移动自动化测试-----AppiumDesktop录制脚本生成极简脚本

python+Appium自动化:运行第一个appium脚本