我正在使用带有C#的WebDriver来自动测试gmail。我填写表格,然后点击按钮进入。如何验证登录的通过或失败?
[FindsBy(How = How.Id, Using = "Email")]
public IWebElement username;
[FindsBy(How = How.Id, Using = "Passwd")]
public IWebElement password;
[FindsBy(How = How.Id, Using = "signIn")]
public IWebElement loginButton;
public LoginForm()
{
PageFactory.InitElements(Driver.driver, this);
}
public GmailPage Login(String username, String password)
{
this.username.SendKeys(username);
this.password.SendKeys(password);
this.loginButton.Click();
GmailPage result = new GmailPage();
return result;
}
答案 0 :(得分:0)
我会使用Nunit,因为你使用C#并查看Assertion docs:NUNIT
我会断言登录成功后在页面上显示的独特内容或断言您没有看到gmail要求重新输入凭据。
Assert.IsTrue( true, "your name here" );
或Assert.False( false, "The username or password you entered is incorrect" );
答案 1 :(得分:0)
当用户名或密码错误时,单击gmail中的登录按钮后会显示一条消息。因此,您可以将文本验证为:
assertTrue(driver.getPageSource().contains("The username or password you entered is incorrect."), "Username or password is not correct");
如果您能够成功登录,则可以执行以下声明:
assertFalse(driver.getPageSource().contains("The username or password you entered is incorrect."), "some message");
以上示例基于使用TestNG作为框架的WebDriver(Selenium 2)。 assertTrue包含2个参数:i)布尔ii)消息。您可以使用NUnit考虑相同的概念。
上面的代码类似于Selenium RC的isTextPresent()
答案 2 :(得分:0)
尝试下面的代码,它对我有用,我通过使用chrome检查字段来获得它,因此右键单击该字段并复制XPath字段并在selenium中使用它们
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20));
driver.FindElement(By.XPath("//div[@class='sign-in-dialog-provider']")).Click();
driver.FindElement(By.Id("identifierId")).SendKeys("YOUR Email\n");
Thread.Sleep(10);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20));
Actions builder = new Actions(driver);
builder.MoveToElement(driver.FindElement(By.XPath("//*[@id='password']/div[1]/div/div[1]/input"))).Build().Perform();
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement checkOut = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='password']/div[1]/div/div[1]/input")));
checkOut.SendKeys("Your Password");
driver.FindElement(By.XPath("//*[@id='passwordNext']/content")).Click();