2012-08-10 75 views
0

我正在使用C#的WebDriver進行gmail的自動化測試。我填寫表格,然後點擊按鈕進入。我如何驗證登錄通過或失敗?使用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

我會用NUnit的,因爲你使用C#和通過有斷言文檔看:NUNIT

我會在一些獨特的,顯示在頁面上斷言後登錄成功或斷言,你沒有看到的Gmail要求重新輸入憑據。

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

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

+0

我明白這一點。但是在提交表單後,會出現加載頁面。如何跳過此頁面並開始在電子郵件頁面中查找元素? – user1590561 2012-08-10 15:52:21

+0

您是否在討論將webelement的等待命令顯示出來? – tebel 2012-08-10 15:54:19

+0

是的。 thread.sleep()不正確,我想問你:我可以在哪裏閱讀關於webdriver的期望。 – user1590561 2012-08-11 12:17:13

0

當用戶名或密碼是錯誤的,有點擊登錄按鈕的Gmail後示出的消息。所以,你可以驗證文本表現爲:使用

assertFalse(driver.getPageSource().contains("The username or password you entered is incorrect."), "some message"); 

上面的例子是基於webdriver的(硒2):

assertTrue(driver.getPageSource().contains("The username or password you entered is incorrect."), "Username or password is not correct"); 

如果你能夠成功登錄,你可以做斷言爲TestNG作爲框架。 assertTrue包含2個參數:i)布爾ii)消息。你可以考慮使用NUnit的相同概念。

上面的代碼類似於硒RC

0

試試下面的代碼isTextPresent(),它的工作對我來說,我使用的鍍鉻檢測等領域得到了它,因此右鍵點擊場和複製的XPath領域並在硒中使用它們

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(); 
+0

如果您想讓您的輸入真正有用 - 請考慮修改縮進並移除所有註釋的代碼。無論哪種代碼都是有用的,那麼它就在那裏,或者它沒用 - 然後你把它扔掉。 – GhostCat 2017-09-01 18:47:37