c# - 为什么我在 WindowsElement 上收到无法隐式转换 AppiumWebElement 的类型错误
问题描述
我正在使用 WinAppDriver 学习 Appium。我正在尝试连接到已经在桌面上启动的应用程序,例如“记事本”,然后单击“最大化”按钮。
但是,代码段
WindowsElement maximizeButton = notepad.FindElementByName("Maximize");
给我这个错误:
Cannot implicitly convert type 'OpenQA.Selenium.Appium.AppiumWebElement' to
'OpenQA.Selenium.Appium.Windows.WindowsElement'. An explicit conversion exists (are you missing a cast?)
我不知道为什么会发生这种情况,因为 nodepad 被声明为 WindowsElement 而 MaximizeButton 是 WindowsElement。如果我将其声明为 var,我不会收到此错误。
但为什么 WindowsElement 不起作用?
[TestMethod]
public void AttachToAnExistingAppWindow()
{
// https://github.com/Microsoft/WinAppDriver/wiki/Frequently-Asked-Questions/a8c02cfac47b4bf0c12c571b6010c403dcfe5e7f#when-and-how-to-attach-to-an-existing-app-window
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", "Root");
WindowsDriver<WindowsElement> DesktopSession = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
Assert.IsNotNull(DesktopSession);
WindowsElement notepad = DesktopSession.FindElementByName("Untitled - Notepad");
notepad.Click();
WindowsElement maximizeButton = notepad.FindElementByName("Maximize");
if (!maximizeButton.Text.Contains("Maximize"))
{
maximizeButton.Click();
}
}
解决方案
谢谢,我发现这个工作..
WindowsDriver<WindowsElement> session;
session.FindElementByName("Maximize").Click();
session.FindElementByName("Restore").Click();
// Or using Maximize and restore via xpath
session.FindElementByXPath($"//Button[starts-with(@Name, \"Maximize\")]").Click();
session.FindElementByXPath($"//Button[starts-with(@Name, \"Restore\")]").Click();
推荐阅读
- node.js - 多种账户类型 MERN Stack
- html - 引导导航栏的自定义“活动”指示器
- linux-device-driver - 如何使用 devicetree 修改重建 Coral mendel?
- javascript - 如何将此 JavaScript 代码添加到 Zapier,以发出第 3 方礼物?
- json - Pentaho Kettle:将两个 Unix 日期时间列转换为一个
- django - 在生产运行时运行 Django 检查
- asp.net - ASP.NET Core 如何添加 SuperWebSocketServer
- asp.net - Asp.net - 从访问本地服务器问题的设备获取 IP 地址
- unix - 在实用程序节点上安装 puppet
- ruby-on-rails - 如何手动包含remotipart js?