簡體   English   中英

Appium:無法在連接的多個Android設備中運行腳本

[英]Appium : unable to run script in multiple android device connected

創建了多個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。

代碼:

Specflow文件:

Test.feature

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

Steps.cs

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

TestAppium.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。

第一個設備的驅動程序實例是否被覆蓋(?)。 這是我作為測試人員而不是開發人員的編程限制。 請幫忙! 提前致謝!

Appium對此存在問題,因為從一開始就不支持多種Android設備。

Appium團隊從此問題開始就致力於此功能。 相當長的線程:)貢獻者將此修復程序合並到代碼中以解決此問題並實現此功能。

該怎么辦

線程有點混亂,但是包含很多內容。 我個人決定在這種情況下不使用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指定不同的端口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM