含硒的C#无法识别元素

时间:2018-10-11 11:28:56

标签: c# selenium

我正在编写一个用于登录和注销应用程序的测试用例。 当我进入登录表单时,找不到任何表示没有此元素的元素(电子邮件和密码)。

代码:

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;



namespace exchange_drop_test_login
{
    class Program
    {


        static void Main(string[] args)
        { 
            IWebDriver driver;
            driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://exchangedrop.com");

            driver.FindElement(By.CssSelector("[href*='/Account/Login']")).Click();



            driver.FindElement(By.XPath("//input[@placeholder='yours@example.com']")).GetAttribute("placeholder");


        }
    }
}

它在最后一行崩溃。有人可以告诉我如何找到元素“电子邮件”和“密码”吗?

我尝试按类名,xpath,名称查找,但是没有任何效果。

电子邮件对象的

html:

<input type="email" name="email" class="auth0-lock-input" placeholder="yours@example.com" autocomplete="off" autocapitalize="off" value="">

1 个答案:

答案 0 :(得分:0)

当我们单击新选项卡后执行时被打开。 但是硒驱动程序继续在旧选项卡上工作。 因此,驱动程序无法找到诸如电子邮件和密码之类的定位元素。

新标签在URL https://airdrop.eu.auth0.com处打开,您正在最后打开的窗口上进行操作。您必须在窗口之间进行切换。因此,driver.SwitchTo()。Window()将在此方面为您提供帮助。 / p>

这肯定会帮助您,我测试了它对我有用,

IWebDriver driver;
driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://exchangedrop.com");

driver.FindElement(By.CssSelector("[href*='/Account/Login']")).Click();

System.Collections.ObjectModel.ReadOnlyCollection<string> str = driver.WindowHandles;

driver.SwitchTo().Window(str.ToArray<string>()[1]);

driver.FindElement(By.Name("email")).SendKeys("    "); 
driver.FindElement(By.Name("password")).SendKeys("    ");
string data = driver.FindElement(By.XPath("//input[@placeholder='yours@example.com']")).GetAttribute("placeholder");
Console.writeLine(data); // Your data will get printed on console