1

创建了多个appium实例。从控制台我运行:

node . -p 4722 -U Z*****K --chromedriver-port 9
515 -bp 2251

node . -p 4723 -U T*****K --chromedriver-port 9
516 -bp 2252

在两个设备上都创建了实例,但 URL 仅在连接的第二个设备上打开。第一个设备中的浏览器保持打开状态,而没有打开 url。

代码 :

规范流文件:

测试特征

  Scenario: Check Home Page
        Given I am on home page
        Then My title should be 'whatever'

步骤.cs

 [Given(@"I am on home page")]
            public void GivenIAmOnHofHomePage()
            {
                var testappium = new TestAppium();
                testappium.SetUp();
                testappium.OpenHomePage();
            }

测试Appium.cs

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Interfaces;
using OpenQA.Selenium.Appium.MultiTouch;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Appium.iOS;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TechTalk.SpecFlow;


namespace Mobile.Tests.UIAutomation
{

    public class TestAppium
    {
        public static IWebDriver driver=null;

        public void SetUp()
        {
            DesiredCapabilities capabilities = new DesiredCapabilities();

            capabilities.SetCapability("device", "Android");
            capabilities.SetCapability("browserName", "chrome");
            capabilities.SetCapability("deviceName", "test");
            capabilities.SetCapability("platformName", "Android");
            capabilities.SetCapability("platformVersion", "5.0.1");
            capabilities.SetCapability("udid", EnvironmentVariables.nexus);

            driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4722/wd/hub"), capabilities, TimeSpan.FromSeconds(180));

            DesiredCapabilities capabilitiess = new DesiredCapabilities();

            capabilitiess.SetCapability("device", "Android");
            capabilitiess.SetCapability("browserName", "chrome");
            capabilitiess.SetCapability("deviceName", "Arpan Buch");
            capabilitiess.SetCapability("platformName", "Android");
            capabilitiess.SetCapability("platformVersion", "5.0.2");
            capabilitiess.SetCapability("udid", EnvironmentVariables.motog);

            driver = new RemoteWebDriver(new  Uri("http://127.0.0.1:4723/wd/hub"), capabilitiess, TimeSpan.FromSeconds(180));
       }

       public void OpenHomePage()
        {
            driver.Navigate().GoToUrl("http://www.google.com");

            Console.WriteLine("Page title is : " +driver.Title);
            Assert.IsTrue(driver.Title.Equals("Google")," Sorry , the website didnt open!!");
        }
     }
  }

在两台设备上都创建了实例,但 URL 仅在连接的第二台设备上打开。第一个设备中的浏览器只是保持打开状态,而没有打开 URL。

第一个设备的驱动程序实例是否被覆盖(?)。这是我作为测试人员而不是开发人员的编程限制。请帮忙!提前致谢!

4

1 回答 1

0

Appium 对此有一个问题,因为支持多个 Android 设备并不是从一开始就支持的功能。

Appium 团队从这个 issue开始着手这个功能。相当长的线程 :) 一位贡献者在代码中合并了这个修复来解决这个问题并实现这样一个特性。

该怎么办

线程有点混乱,但包含很多材料。我个人决定在这种情况下不使用 Appium,因为目前并不那么可靠。但是,我认为在您的能力范围内,您应该指定:

capabilitiess.SetCapability("udid", "<UDID>");
capabilitiess.SetCapability("devicePort", "<ADB-port-listening-to-device>");

最后一个能力是关键!该线程解释了很多,但基本上你应该把 ADB 用来监听你的设备的端口号放在那里。如果您连接两个 Android 设备,您将获得两个不同的端口。

更多 Appium 实例

您可能想尝试运行两个 Appium 服务器,就像我之前链接的同一个线程中解释的那样。

appium -p 4725 -bp 4727 -U 02*************** --chromedriver-port 9515
appium -p 4724 -bp 4726 -U 07a************** --chromedriver-port 9516

考虑到以下几点:

node . -p <appium_port> -bp <device_port> -U <serial> -g <logfile>

您的测试当然应该参考在同一台机器上但在两个不同端口上运行的这两个不同的 Appium 实例。在您的示例中,请记住为 Chromedriver 指定不同的端口

于 2015-03-02T12:41:10.640 回答