我正在编写一个用于登录和注销应用程序的测试用例。 当我进入登录表单时,找不到任何表示没有此元素的元素(电子邮件和密码)。
代码:
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="">
答案 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