【问题标题】:Testing excel with Winappdriver使用 Winappdriver 测试 excel
【发布时间】:2020-03-03 15:02:14
【问题描述】:

我在哪里可以找到使用 winappdriver 使用自定义功能区元素测试 excel 插件项目的好示例。

到目前为止,我抛出了一个异常:

System.InvalidOperationException 使用给定的搜索参数无法在页面上找到元素。

我正在使用最新的 winappdriver

代码:

private const string ExcelAppId = @"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE";

private const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";

DesiredCapabilities appCapabilities = new DesiredCapabilities();
            appCapabilities.SetCapability("app", ExcelAppId);
            appCapabilities.SetCapability("deviceName", "WindowsPC");
            appCapabilities.SetCapability("platformName", "Windows");

session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

session.FindElementByName("Blank workbook").Click();

【问题讨论】:

    标签: excel appium winappdriver


    【解决方案1】:

    我正在使用 WinAppDriver 对 Excel 加载项进行自动化测试。 就我而言,我在没有启动画面的情况下启动了 Excel。提供 /e 作为 app 参数来实现它。

    session.SetCapability("appArguments", "/e");

    从现在开始,您将能够按名称找到“文件”菜单和“新建”菜单并单击它们。 添加几秒钟的显式等待,然后以相同的方式继续查找“空白工作簿”WindowsElement。

    我希望这能回答您的问题,如果需要更多帮助,请在此处发布。 几个月以来,我一直在试验 WinAppDriver,还准备了一个关于该主题的 Udemy 课程,该课程几乎可以发布了。这是一个有趣的工具包。

    【讨论】:

    【解决方案2】:

    您需要从“管理 Nuget 包” 安装 Appium.WebDriver、Selenium.support、Selenium.webDriver 您可以使用 appium 代码,例如:

    using OpenQA.Selenium;
    using OpenQA.Selenium.Appium;
    using OpenQA.Selenium.Appium.Windows;
    
    class Excel
            {
                public void ExcelCase() { 
            WindowsDriver<WindowsElement> driver;
                AppiumOptions desiredcap = new AppiumOptions();
                desiredcap.AddAdditionalCapability("app", @"C:\Program Files\Microsoft Office\Office16\EXCEL.EXE");
                    driver = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), desiredcap);
     driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
    
                    if (driver == null)
                    {
                        Console.WriteLine("App not running");
                        return;
                    }
        }}
    

    如果您遇到任何问题,请尝试此代码并发表评论。

    【讨论】:

      【解决方案3】:

      我更喜欢使用:session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);而不是 Thread.sleep(5)。

      【讨论】:

      • 这些是不同的东西。一种是为所有请求设置客户端库的等待,另一种是暂停测试线程。
      【解决方案4】:

      开始测试时它甚至会打开excel吗?

      如果按名称不起作用,有时对我也不起作用,您可以使用accessibilityId

      session.FindElementByAccessibilityId("AIOStartDocument").Click();
      

      或使用键盘快捷键打开空白工作簿,如下所示:

      session.Keyboard.SendKeys(Keys.Alt + "f" + "l" + Keys.Alt);
      

      【讨论】:

      • 你也可以使用这个组合键 SendKeys($"{Keys.LeftControl}+n");。我只在 Excel 2016 上使用过这个。
      猜你喜欢
      • 2019-03-22
      • 2020-05-07
      • 2022-07-06
      • 1970-01-01
      • 2022-06-30
      • 2020-05-30
      • 2020-11-12
      • 2019-08-29
      • 2020-12-03
      相关资源
      最近更新 更多