Search code examples
c#seleniumselenium-webdriveratata

C#, Atata Framework: Unable to use .Hover() Control method after updated Selenium.WebDriver to v 4.3


Element example:

[FindByCss("input[formcontrolname='name']")]
public TextInput<TOwner> NameInput { get; private set; }

Code that throws the error:

editProjectPage.NameInput.Hover();

After updating Selenium.WebDriver to v 4.3 on the test run returns such an error:

Tough life of AT

Error message:

System.MissingMethodException: 'Method not found: 'OpenQA.Selenium.Interactions.Actions OpenQA.Selenium.Interactions.Actions.MoveToElement(OpenQA.Selenium.IWebElement, Int32, Int32, OpenQA.Selenium.Interactions.MoveToElementOffsetOrigin)'.'

So far worked around with such a spike method:

public static void EmulateHover<TOwner>(IControl<TOwner> element) where TOwner : PageObject<TOwner>
{
    var sourceElement = element.Scope;
    var actions = new Actions(element.Context.Driver);
    actions.ScrollToElement(sourceElement);
    actions.MoveToElement(sourceElement);
    actions.Build().Perform();
}

But in implementation, it looks... like a spike ;) Any suggestion if it will be fixed or am I doing something wrong?


Solution

  • Actions.MoveToElement(IWebElement, Int32, Int32, MoveToElementOffsetOrigin) method was removed in WevDriver v4.3. Current Atata v2.0.1 uses that method to hover elements.

    Let me upgrade Atata to WevDriver v4.3, solve that error by using another MoveToElement method overload, and publish Atata v2.1.0. I'll update this answer after release.

    Update

    Atata v2.1.0 is released. Please update and verify whether Hover() method works. It should be fine now.