Почему я получаю сообщение об ошибке неявно преобразовать тип для AppiumWebElement в WindowsElement - PullRequest
0 голосов
/ 08 мая 2020

Я изучаю Appium с WinAppDriver. Я пытаюсь подключиться к приложению, уже запущенному на рабочем столе, например, «Блокнот», а затем нажмите кнопку «Развернуть».

Однако сегмент кода

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();
        }
    }

Ответы [ 2 ]

0 голосов
/ 19 мая 2020

Спасибо, я обнаружил, что это работает ..

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();
0 голосов
/ 18 мая 2020

Вы можете попробовать WindowsElement maximizeButton = (WindowsElement) notepad.FindElementByName ("Развернуть");

...