0

我正在使用带有 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;
}
4

3 回答 3

0

我会使用 Nunit,因为您使用 C# 并通过那里查看断言文档: NUNIT

我会断言登录成功后页面上显示的独特内容,或者断言您没有看到 gmail 要求重新输入凭据。

Assert.IsTrue( true, "your name here" );

或者Assert.False( false, "The username or password you entered is incorrect" );

于 2012-08-10T15:29:46.237 回答
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()

于 2012-08-28T11:56:38.303 回答
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();
于 2017-09-01T18:08:12.613 回答