Selenium:元素不可见,异常C#

时间:2018-08-26 18:27:14

标签: c# selenium-webdriver

我正在尝试登录“ https://www.quora.com/”,它具有登录屏幕,我在其中输入了我的用户名和密码,它始终抛出Element不可见,我在SO上经历了所有其他答案,但都无济于事

我尝试通过Javascript和ScrollintoView单击该元素,但无济于事。

IWebElement uname = driver.FindElement(By.Name("email"));

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", uname);
js.ExecuteScript("arguments[0].scrollIntoView()", uname);
js.ExecuteScript("arguments[0].click()", uname);
uname.SendKeys("myusername@uname.com");

他们都没有工作。

3 个答案:

答案 0 :(得分:1)

页面上还有一个带有<input name="email">元素的登录表单(隐藏)。您需要处理可见的一个。尝试使用以下代码找到必填的输入字段:

IWebElement uname = driver.FindElement(By.Xpath("//div[@class='login']//input[@name='email']"));

答案 1 :(得分:0)

要登录https://www.quora.com/,您需要将字符序列发送到电子邮件密码字段,然后可以使用以下解决方案:

  • 电子邮件字段:

    driver.FindElement(By.CssSelector("input.text.header_login_text_box.ignore_interaction[name='email']")).SendKeys("myusername@uname.com");
    
  • 密码字段:

    driver.FindElement(By.CssSelector("input.text.header_login_text_box.ignore_interaction[name='password']")).SendKeys("PankajKushwaha");
    

答案 2 :(得分:0)

查找C#代码以进行登录

[TestMethod]
    public void QuoraLogin()
    {
        ChromeDriver webDriver = new ChromeDriver();
        WebDriverWait wait = new WebDriverWait(webDriver, new TimeSpan(0, 0, 0, 30));
        webDriver.Navigate().GoToUrl("https://www.quora.com/");
        IWebElement email= wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@class='login']//input[@name='email']")));
        email.SendKeys("ABC@yahoo.com");
        IWebElement password = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@class='login']//input[@name='password']")));
        password.SendKeys("123");
        webDriver.FindElement(By.XPath("//div[@class='login']//input[@value='Login']")).Click();
    }