当前位置: 首页 > 知识库问答 >
问题:

如何在真实设备上启动android应用程序

戚勇
2023-03-14

Android设备是索尼xperia Z,4.3版本。

我想自动化本机计算器应用程序。

代码:

 import java.net.MalformedURLException;
    import java.net.URL;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.remote.CapabilityType;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.openqa.selenium.remote.RemoteWebDriver;
    import org.testng.annotations.*;

    public class Calculator {

     WebDriver driver;

     @BeforeClass
     public void setUp() throws MalformedURLException{

          //Set up desired capabilities and pass the Android app-activity and app-package to Appium
          DesiredCapabilities capabilities = new DesiredCapabilities();
         capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
         capabilities.setCapability(CapabilityType.VERSION, "4.3");
         capabilities.setCapability(CapabilityType.PLATFORM, "Windows");
         capabilities.setCapability("device","");
         capabilities.setCapability("app-package", "com.android.calculator2"); // This is package name of your app (you can get it from apk info app)
         capabilities.setCapability("app-activity", "com.android.calculator2.Calculator"); // This is Launcher activity of your app (you can get it from apk info app)
            //Create RemoteWebDriver instance and connect to the Appium server.
            //It will launch the Calculator App in Android Device using the configurations specified in Desired Capabilities
         driver = new RemoteWebDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);

     }
     @Test
     public void testCal(){
         //locate the Text on the calculator by using By.name()
         WebElement two=driver.findElement(By.name("2"));
         two.click();
         WebElement plus=driver.findElement(By.name("+"));
         plus.click();
         WebElement four=driver.findElement(By.name("4"));
         four.click();
         WebElement equalTo=driver.findElement(By.name("="));
         equalTo.click();
         //locate the edit box of the calculator by using By.tagName()
         WebElement results=driver.findElement(By.tagName("EditText"));
                //Check the calculated value on the edit box
                assert results.getText().equals("6"):"Actual value is : "+results.getText()+" did not match with expected value: 6";
      }

     @AfterClass
     public void teardown(){
         //close the app
         driver.quit();
     } 
     }

步骤:

1.将设备与系统连接,并使用adb devices命令检查-它显示我的设备已连接。

2.使用命令启动appium:appium

3.执行代码:

我得到这个错误:

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Parameter 'appPackage' is required for launching application) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9.50 seconds
Build info: version: '2.41.0', revision: '3192d8a', time: '2014-03-27 17:17:32'
System info: host: 'Admin-PC', ip: '192.168.1.13', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_55'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:126)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:153)
    at ExecuteTest.initialize(ExecuteTest.java:30)
    at ExecuteTest.main(ExecuteTest.java:16)

共有1个答案

闻枫
2023-03-14

请将您的代码与以下功能列表匹配,并使用Appium 1.0:

  DesiredCapabilities capabilities = new DesiredCapabilities();
   capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
   capabilities.setCapability("deviceName","sony xperia Z");
   capabilities.setCapability("platformVersion", "4.4");
   capabilities.setCapability("platformName","Android");
   capabilities.setCapability("appPackage", "com.android.calculator2");
   capabilities.setCapability("appActivity", "com.android.calculator2.Calculator");
   driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

或者,如果套餐和活动详细信息如下所示,请使用相同的

       capabilities.setCapability("appPackage", "com.sonymobile.smallapps.calc"); 
 capabilities.setCapability("appActivity", "com.sonymobile.smallapps.calc.TestActivity");
 类似资料:
  • 我需要启动android前台服务,并在设备启动时从服务启动活动。我广泛地搜索了web和stackoverflow并尝试了不同的建议,但非常奇怪的是,我不能使这个功能工作。 我不明白我做错了什么。 下面是来自我的项目的代码和清单文件的内容。 我做错了什么,如何解决它,在大多数android设备上工作的功能? 这是我的AndroidManifest.xml: 这是我的austostart.java:

  • 我正在尝试在Android设备上启动我的Flutter应用程序,直到昨天我才能够,但是今天突然间我在启动它时收到此错误: 我试过删除. gradle文件夹,但不起作用。 编辑 这是我的~/。zshrc文件

  • 我想在开发过程中在真正的iPhone和Android手机上运行/测试(而不是自动测试)我的颤振应用程序。然而,Flutter文档似乎只记录了如何使用iOS模拟器或Android模拟器。 我认为这对于iOS / Android开发人员来说已经是一个明智的选择,但我都不是,Flutter是我第一次涉足移动开发。 有没有关于如何在真实设备上运行时开发的初学者指南的链接? 附加上下文 < li >我是一名

  • 几周前我开始使用Android Studio。我在一个具有正常登录屏幕的应用程序上工作过,在模拟器上一切正常。但如果我尝试在我的三星Galaxy S7 Edge(Android 7.0)上运行该应用程序,该应用程序会立即崩溃。 我已经用API 23模拟了Nexus 5,当我用API 24模拟的Pixel尝试时,模拟器也会崩溃。所以我想问题取决于Android版本? Logcat(我把我正在使用的所

  • 我注意到在logcat选项卡中,它在发送请求和重复等待响应上花费了时间… 谁能告诉我,是硬件资源的问题,还是我的怀疑是真的,原因是其他的东西。

  • 我试图弄清楚为什么我正在开发的应用程序在我的设备上运行时立即开始崩溃(运行iOS6.1的苹果4)。我已经在这个应用程序上工作了大约8周,这个问题似乎是突然出现的。 当我在模拟器上运行应用程序时,它运行良好。当我尝试在我的设备上运行它时,它会崩溃,并在以下位置中断: 崩溃发生在App委托方法之前 有人打电话来。 我已经看过了设备崩溃日志,但我没有看到任何关于发生了什么的线索。有人知道我可以从哪里开始