1

我在哪里可以找到使用 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();
4

4 回答 4

1

您需要从“管理 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;
                }
    }}

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

于 2020-03-03T07:02:14.507 回答
1

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

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

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

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

于 2019-08-30T14:02:18.857 回答
0

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

于 2017-10-31T14:25:46.563 回答
0

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

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

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

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

session.Keyboard.SendKeys(Keys.Alt + "f" + "l" + Keys.Alt);
于 2018-02-05T15:20:38.200 回答