2017-05-06 24 views
-2

我的代碼。我在「userId」和「password」字段中輸入我的登錄名和密碼。我想寫一個條件來檢查你何時點擊「提交」按鈕或者可以登錄系統。如果「userId」和「password」是正確的,那麼當你按下「提交」按鈕時,將加載一個新頁面並且發佈下一部分代碼。但是我想在用戶輸入錯誤密碼時添加一個條件。然後,按下「提交」按鈕後,頁面上會出現「錯誤的登錄信息」消息。任何人都可以幫我寫這樣的條件嗎?錯誤密碼硒的條件java

for(int i =0;i<userName.size();i++){ 
     driver.findElement(By.id("userId")).sendKeys(userName.get(i)); 
     Thread.sleep(6000); 
     driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 

     driver.findElement(By.id("password")).sendKeys(password.get(i)); 
     Thread.sleep(6000); 
     driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 
     driver.findElement(By.id("Submit")).click(); 

//這裏加載新的一頁

  // change password 
      driver.findElement(By.xpath(".//*[@id='_id9']/table/tbody/tr[2]/td[1]/table[1]/tbody/tr[5]/td[2]/a")).click(); 
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 
      Thread.sleep(6000); 
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 


      // new password 
      String pwd = RandomStringUtils.random(15, upper+smaller+number+character); 
      System.out.println("New password: " + pwd); 
      driver.findElement(By.id("newPassword")).sendKeys(pwd); 
      Thread.sleep(6000); 
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 

      // confirm password 
      driver.findElement(By.id("confirmPassword")).sendKeys(pwd); 
      System.out.println("Confirm password: " + pwd); 
      Thread.sleep(10000); 
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 
+0

我可以請求您使用我們的社區專家提供的關於您以前的問題的解決方案,並在您提出新問題之前關閉討論主題?謝謝 – DebanjanB

+0

SO不是代碼寫入服務。 SO和網絡上有大量的信息來幫助你做你正在問的問題。學習的一部分實際上是花時間試圖去做問題,然後再問別人爲你做你的工作。請閱讀[問]和[預計需要多少研究工作?](https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users)請提供您嘗試過的代碼以及執行結果,包括任何錯誤消息等。還請提供指向頁面和/或相關HTML的鏈接。 – JeffC

回答

0

嘗試以下操作:

點擊提交按鈕後,你可以檢查這個元素是否存在於你的頁面上:driver.findElement(By.xpath(".//*[@id='_id9']/table/tbody/tr[2]/td[1]/table[1]/tbody/tr[5]/td[2]/a"));

如果是這意味着新頁面被載入,因爲登錄成功或者它是一個糟糕的登錄。

您可以點擊提交按鈕嘗試以下後也這樣做:

UPDATE

List<WebElement> myElemnt = driver.findElements(By.xpath(".//*[@id='_id9']/table/tbody/tr[2]/td[1]/table[1]/tbody/tr[5]/td[2]/a")); 

loginSuccessful(myElemnt); 

//執行loginSuccessful()函數:

public boolean loginSuccessful(WebElement element){ 
    try{ 
     element; 
     return true; 
     } 

    catch(Exception e){ 
     System.out.println("Bad Login Information!!"); 
     return false; 
     } 

} 

OLD

String beforeTitle = driver.getTitle(); 

    //put your Click Submit Button code here 

    String afterTitle = driver.getTitle(); 

    if(beforeTitle.equals(afterTitle)){ 

    System.out.println("Bad Login Information!!"); 

    } 
+0

它看起來不錯,但如果該元素不存在,默認的30秒超時將導致等待。您可以使用find元素(而不是元素)創建自己的函數,以便更快速地編寫代碼 –

+0

實際上,它可以實現您所寫的內容。謝謝。但是他寫了@ Hezi以色列人。如果沒有這樣的項目,它等待30秒,你能幫助如何做到這一點,以便它不會等待很長時間? – danio900409

+0

你能以某種方式減少第一種情況下的30次超時嗎?因爲雙方的標題相同:( – danio900409