【问题标题】:Android Mobile testing with Appium Selenium C#使用 Appium Selenium C# 进行 Android 移动测试
【发布时间】:2020-05-02 09:08:57
【问题描述】:

我从谷歌和 youtube 上尝试了很多不同的东西,这就是我登陆的地方,我无法让它工作,我与 Appium 和模拟器的连接很好,我也检查了 adb 设备一切都是很好。

driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap, TimeSpan.FromSeconds(180)); 的线路出现错误

这是我得到的两个错误:

“无法从 'System.Uri' 转换为 'OpenQA.Selenium.Appium.Service.AppiumServiceBuilder'”

“无法从 'OpenQA.Selenium.Remote.DesiredCapabilities' 转换为 'OpenQA.Selenium.DriverOptions”。

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Appium.Enums;
using OpenQA.Selenium.Appium.Android;

namespace UnitTestProject4
{
    [TestClass]
    public class UnitTest1
    {
        AppiumDriver<IWebElement> driver;
 [TestMethod]
    public void TestMethod1()
    {
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.SetCapability("deviceName", "Pixel 3a Pie 9.0 - API 28");
        cap.SetCapability("platformVersion", "9.0");
        cap.SetCapability("udid", "emulator-5554");
        cap.SetCapability("appPackage", "org.mozilla.firefox");
        cap.SetCapability("appActivity", "org.mozilla.gecko.BrowserApp");
        cap.SetCapability("platformName", "Android");
        driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap, TimeSpan.FromSeconds(180));
        driver.Navigate().GoToUrl("https://www.google.com");

      }
   }
 }

【问题讨论】:

    标签: android visual-studio selenium testing appium-android


    【解决方案1】:

    你很接近,但我会做一些小的调整。您的错误消息抱怨两件事——使用DesiredCapabilities 而不是AppiumOptions,以及使用new Uri("http://127.0.0.1:4723/wd/hub") 作为AndroidDriver&lt;IWebElement&gt; 的参数。

    为了解决这些问题——我用AppiumOptions 初始化我的AndroidDriver 而不是DesiredCapabilities。此外,您应该尝试通过 AppiumServiceBuilder() 启动 Appium 并使用该服务来启动您的驱动程序会话。您还应该为automationName 指定一个参数。

    这是我在 Android 上使用 C# 开始新的移动会话时常用的方法:

    // start appium service
    var builder = new AppiumServiceBuilder();
    var appiumLocalService = builder.UsingAnyFreePort().Build();
    appiumLocalService.Start();
    
    // create appium driver capabilities
    var options = new AppiumOptions { PlatformName = "Android" };
    options.AddAdditionalCapability("deviceName", "Pixel 3a Pie 9.0 - API 28");
    
    // add app or appPackage / appActivity depending on preference
    options.AddAdditionalCapability("appPackage", "org.mozilla.firefox");
    options.AddAdditionalCapability("appActivity", "org.mozilla.gecko.BrowserApp");
    
    options.AddAdditionalCapability("udid", "emulator-5554");
    options.AddAdditionalCapability("automationName", "UiAutomator2"); // this one is important
    
    // these are optional, but I find them to be helpful -- see DesiredCapabilities Appium docs to learn more
    options.AddAdditionalCapability("autoGrantPermissions", true);
    options.AddAdditionalCapability("allowSessionOverride", true);
    
    
    // start the driver
    var driver = new AndroidDriver<IWebElement>(appiumLocalService.ServiceUrl, options);
    

    【讨论】:

    • 感谢您的快速响应,我浏览了文档并跳过了大部分内容,哈哈,我想我应该花更多的时间。出于某种原因,它会出错,即使我有 appium 和节点,也没有安装节点,它通过执行 npm 全局安装来修复它。非常感谢它的工作。我也会看看你的 git hub。谢谢
    • 当我第一次开始研究这个问题时,我经历了类似的事情——我花了几天的时间研究、反复试验,最终让一切正常工作。我可以指导您访问的最有用的资源是官方 Appium 存储库,其中包括 C# 代码示例:github.com/appium/appium/tree/master/sample-code/csharp
    • 我还有一个问题,我如何在使用它的同时分离测试用例,我还需要为每个测试用例传递单独的驱动程序吗? D 我需要遵循设置和拆卸过程吗?
    • @Newbie 遵循 SetUp 和 TearDown 流程是将其集成到您的测试用例中的最简洁方式。如果您打开另一个 StackOverflow 问题(所以这个问题不会离题),我很乐意提供帮助。
    • 不知道是怎么回事,现在涨了,我想这里需要一段时间才能适应
    猜你喜欢
    • 1970-01-01
    • 2015-01-08
    • 2015-04-08
    • 2014-08-03
    • 2020-06-30
    • 2015-10-15
    • 2018-05-18
    • 2016-09-25
    • 2022-11-08
    相关资源
    最近更新 更多