'no such element: Unable to locate element : {"method":"css selector","selector":"#Password"} using Selenium and C#
I wrote a simple test for login
namespace Seleniumtest.Customer
{
[TestFixture]
class LoginTest :TestBase
{
[Test]
public void LoginWithPhoneNumber()
{
webDriver.Navigate().GoToUrl("https://test123.ifc.ir/login");
webDriver.FindElement(By.Id("EmailOrPhoneNumber")).SendKeys("09108599423");
webDriver.FindElement(By.ClassName("buttons")).Click();
var input = webDriver.FindElement(By.Id("Password"));
Assert.That(input.Displayed, Is.True);
}
}
}
This program will click login and have login and find partial view input password but its just instert the value in username and click the submit but never find password.
Solution 1:[1]
Once you invoke the url through get(), fillup the EmailOrPhoneNumber field and click on the Submit button it would need a little while for the Password field to be visible and interactable.
Solution
In these cases to invoke Click() on the desired element you have to induce WebDriverWait for the ElementToBeClickable and you can use either of the following locator strategies:
Id:
new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.Id("Password"))).Click();CssSelector:
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("#Password"))).Click();XPath:
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='Password']"))).Click();
References
You can find a couple of relevant detailed discussions in:
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | undetected Selenium |
