亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自動化框架,用于自動化從 Web 應用程序到移動應用程序的場景

自動化框架,用于自動化從 Web 應用程序到移動應用程序的場景

素胚勾勒不出你 2023-07-28 10:08:42
我想知道一個工作框架或一種方法來自動化腳本,該腳本必須在網絡和移動設備上運行單一場景。假設情況是,您已使用前臺網絡應用程序預訂了從果阿運送到德里的貨物,并且您已收到貨件編號?,F在,交付團隊有一個移動應用程序,他們使用該應用程序不斷更新貨件狀態:從源站出發,在途中,到達目的地。當交付團隊更新移動應用程序上的狀態時,當您作為用戶跟蹤貨件編號時,此狀態應反映在 Web 應用程序中。
查看完整描述

1 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

我過去曾處理過類似的問題,其中測試用例需要在移動和網絡瀏覽器平臺上進行測試。


您需要CreateDriver在一個類中實現兩種不同的方法DriverManager- 一種用于 Appium 驅動程序(用于移動設備),另一種用于 Selenium WebDriver(用于 Web 瀏覽器)。您的測試用例需要指定何時從網絡“切換”到移動設備,或從移動設備“切換”到網絡。您還需要包含一種停止 Appium 服務器的方法,以便在從移動設備切換到 Web 時使用。這是一個簡單的通用示例,說明了它的工作原理:


public class DriverFactory

{


    private static AppiumLocalService _appiumLocalService;


    // use Current instance to act as static DriverFactory class instance

    private static DriverFactory _current;

    public static DriverFactory Current => _current ?? (_current = new DriverFactory());


    public AndroidDriver<AppiumWebElement> CreateAndroidDriver()

    {

        // start Appium server

        var builder = new AppiumServiceBuilder();

        _appiumLocalService = builder.UsingAnyFreePort().Build();

        _appiumLocalService.Start();


        // set desired capabilities or appium options here

        var options = new AppiumOptions {PlatformName = "Android"};


        // start AndroidDriver session

        var driver = new AndroidDriver<AppiumWebElement>(_appiumLocalService.ServiceUrl, options);


        return driver;

    }


    public void StopAppiumService()

    {

        // stop appium server

        _appiumLocalService.Dispose();


    }


    public IWebDriver CreateSeleniumDriver()

    {

        // create browser-specific webdriver here

        // return webdriver

    }

}

然后,您可以實現一個BaseTestFixture為您處理啟動和停止每個驅動程序的驅動程序。該類還包含 Selenium WebDriver 和 Appium 驅動程序的實例。您編寫的每個測試類都應該從此固定裝置繼承,以繼承兩個驅動程序實例。


public class BaseTestFixture

{

    public static AndroidDriver<AppiumWebElement> AppiumDriver { get;set; }

    public static IWebDriver SeleniumDriver { get set; }


    public void SetAppiumDriver()

    {

        AppiumDriver = DriverFactory.Current.CreateAndroidDriver();

    }


    public void TearDownAppiumDriver()

    {

        AppiumDriver.Close();

        AppiumDriver.Quit();

        DriverFactory.Current.StopAppiumService();

    }


    public void SetSeleniumDriver()

    {

        SeleniumDriver = DriverFactory.Current.CreateSeleniumDriver();

    }


    public void TearDownSeleniumDriver()

    {

        SeleniumDriver.Close();

        SeleniumDriver.Quit();

    }

}

最后——這是如何BaseTestFixture在測試類中使用的:


using MyProject.BaseTestFixture;


[TestFixture]

public class MyTestClass : BaseTestFixture

{

    [Test]

    public void ShouldStartBothDrivers()

    {

        // set Appium driver -- we are testing with mobile

        SetAppiumDriver();


        // perform testing with Appium driver

        AppiumDriver.FindElement(.....);


        // finished mobile testing -- move to web browser

        TearDownAppiumDriver();


        // set Selenium driver -- web browser testing

        SetSeleniumDriver();


        // perform testing with Selenium driver

        SeleniumDriver.FindElement(....);


        // finished web browser testing -- close selenium driver

        TearDownSeleniumDriver();

    }

}

正如我所提到的,這是一個非常通用的示例,需要您進行自定義以滿足您的特定需求。這只是如何處理兩個驅動程序的示例架構。希望這可以幫助。


查看完整回答
反對 回復 2023-07-28
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號