【问题标题】:Not able to find my object created for DesiredCapabilities class找不到为 DesiredCapabilities 类创建的对象
【发布时间】:2019-01-02 22:51:34
【问题描述】:

我已经开始在 Android 中构建我的第一个 Appium 测试,为此,我开始编写我的代码。

我实例化了我的DesiredCapabilities 对象,但是当我尝试使用该引用时,我看不到该引用。

该问题的图片链接:

以下是为我的项目添加的依赖项:

  <dependencies>
    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.13.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/io.appium/java-client -->
    <dependency>
        <groupId>io.appium</groupId>
        <artifactId>java-client</artifactId>
        <version>6.1.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.testng/testng -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.14.3</version>
        <scope>test</scope>
    </dependency>

  </dependencies>

请帮助我,以帮助我继续编码。 是否遗漏了我需要关联的任何 jar?

【问题讨论】:

    标签: selenium automation appium desiredcapabilities


    【解决方案1】:

    初始化您的设备功能,例如

    public class FirstDemoClass{
    
      public static void main(String[] args){
    
        AppiumDriver<WebElement> driver;   
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("deviceName", "Android phone");
        caps.setCapability("udid", "your device unique id");
        caps.setCapability("platformName", "Android");
        caps.setCapability("platformVersion", "phone version");
        caps.setCapability("appPackage", appPackage);
        caps.setCapability("appActivity", appActivity);
        driver=new AndroidDriver<WebElement>(new URL(
            "http://127.0.0.1:4723/wd/hub"), caps);
      }
    }
    

    【讨论】:

      【解决方案2】:

      你不能在类中直接使用引用访问方法,因为没有执行入口点。您必须在methodconstructorblock(静态/非静态)中编写代码。请参考以下示例:

      我的方式

          DesiredCapabilities capabilities =DesiredCapabilities.android();
      
          public FirstDemoClass() {
              // TODO Auto-generated constructor stub
              capabilities.setCapability("deviceName", "emulator-5554");
          }
      

      方式二

          DesiredCapabilities capabilities =DesiredCapabilities.android();
      
         // method
          public void setCapabilities() {
      
              capabilities.setCapability("deviceName", "emulator-5554");
          }
      

      方式三

          static DesiredCapabilities capabilities = DesiredCapabilities.android();
      
          // block
          static {
              capabilities.setCapability("deviceName", "emulator-5554");
          }
      
          public static void main(String[] args) {
      
          }
      

      这应该可行。如果有任何事情,请告诉我。

      【讨论】:

      • 这如何回答 OP 的问题或解决他的问题? ---“我实例化了我的 DesiredCapabilities 对象,但是当我尝试使用该引用时,我看不到该引用”
      • @GPT14,因为 OP 没有在方法/构造函数中编写代码。这就是java允许访问特定引用方法的方式,它不允许直接在类中通过引用访问某些方法,因为没有执行入口点。
      • 是的。只是说您的答案可能包含更多关于为什么它对 OP 不起作用以及您的解决方案背后的原因的解释。如果您可以编辑答案以包含此内容,我会 +1。
      • @GPT14,是的,更新相同。如果您想添加更多内容,您可以编辑 :) 谢谢
      • 嘿...糟糕的错误从我这边糟糕的错误...我忘了定义一个方法...:(我很傻...谢谢大家
      猜你喜欢
      • 2013-05-25
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 2021-07-08
      相关资源
      最近更新 更多