Issue
I am trying to find the google login button from this url
https://marketsmithindia.com/mstool/landing.jsp#/signIn
and getting this exception NoSuchElementException
I am using Specflow, it is the most basic thing, just opening the browser, navigating the url and click the button.
Here is some code that I am using
_driver = new EdgeDriver();
_driver.Manage().Window.Maximize();
_driver.Url = "https://marketsmithindia.com/mstool/landing.jsp#/signIn";
Thread.Sleep(3000);
//this is just clicking the Agreed button on terms and conditions dialog
var element = _driver.FindElement(by: By.XPath("//*[@id=\"msi_non_eu_popup\"]/div/div/div[3]/button"));
if (element != null)
{
element.Click();
}
Thread.Sleep(5000);
//this line throws exception NoSuchElementException
var googleButtonElement=_driver.FindElement(By.XPath("//*[@id='googlebtnclick']"));
It'll be great help if you could help or suggest something to make this work.
Solution
You should use GetShadowRoot method and filtering your element inside shadow root DOM context.
driver
.FindElement(By.Id("userlogin"))
.GetShadowRoot() <-- It will give you shadow root context
.FindElement(By.Id("googlebtnclick"));
Answered By - Michał Cichoń
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.