2014-03-28 46 views
0

任何人都知道這段代碼有什麼問題。 它通過我的測試,即使我有錯誤的憑據。 我在Eclipse中使用Java和Selenium WebDriver。登錄測試通過了錯誤的憑據

我不確定做錯了什麼,並且似乎無法在Google上找到答案。

public class LoginTest { 

    String url ="jdbc:sqlserver://CODESV3;databaseName=Codes;integratedSecurity=true"; 
    String DBdriver ="com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
    Connection conn = null; 
    WebDriver driver = null; 
    PreparedStatement pstmt=null; 
    ResultSet rs=null; 


    @BeforeTest 
    public void establishConn() 
    { 
     driver = new FirefoxDriver(); 
     driver.get("https://10.10.10.50/"); 
     // establish connection 
     try{ 
      Class.forName(DBdriver).newInstance(); 
      conn = DriverManager.getConnection(url); 
     }catch(Exception e){ 
      System.out.println("Database failed to connect "); 
     } 
    } 

    @Test 
    public void testLogin() 
    { 
     String forceID="1234"; 
     String username="ayaslem"; 
     String password="Delpiero10+"; 
     boolean valueFound=false; 
     // Check the db 
     try{ 
      pstmt=conn.prepareCall("select * from Login where ForceID=? and Username=? and Password=?"); 
      pstmt.setString(2,forceID); 
      pstmt.setString(3,username); 
      pstmt.setString(4,password); 
      rs=pstmt.executeQuery(); 
      valueFound =rs.next(); 

     }catch(Exception e){ 
       // report some error 
     } 
     // login into app 
     driver.findElement(By.xpath("//*[@id='LogonModel_OrganisationName']")).sendKeys(forceID); 
     driver.findElement(By.xpath("//*[@id='LogonModel_UserId']")).sendKeys(username); 
     driver.findElement(By.xpath("//*[@id='LogonModel_Password']")).sendKeys(password); 
     driver.findElement(By.xpath("//*[@id='maincontent']/form/div/fieldset/div[4]/div[2]/input")).click(); 
} 
+0

你不valueFound做什麼東西嗎? –

+0

我期望用valueFound做什麼?設置爲false,valueFound = rs.next();應該返回false如果值不匹配數據庫和真如果匹配分貝 –

+0

是的,但你沒有從我能看到的測試它?你只需通過rs.next()來設置它。 Theres沒有斷言或檢查它的真實與否。不管valueFound的值是什麼,您都只需從try塊中取出並登錄到應用程序。 –

回答

0

您不會對valueFound執行任何檢查或斷言。我不知道您的使用,以測試它是什麼,但你可以做一些類似

assertTrue(valueFound); 

if(valueFound) { 
    driver.findElement(By.xpath("//*[@id='LogonModel_OrganisationName']")).sendKeys(forceID); 
    driver.findElement(By.xpath("//*[@id='LogonModel_UserId']")).sendKeys(username); 
    driver.findElement(By.xpath("//*[@id='LogonModel_Password']")).sendKeys(password); 
    driver.findElement(By.xpath("//*[@id='maincontent']/form/div/fieldset/div[4]/div[2]/input")).click(); 
} else { 
    //dont login 
} 
+0

Stu Whyte,您的代碼是有效的,但我希望我的代碼能夠訪問該網站並輸入證書,而不管對或錯憑證。然後檢查輸入的憑證是否在數據庫中,如果不能通過測試,則通過測試。 –

+0

我不明白你。這段代碼出現在註釋爲@Test的方法中。我認爲這是你所說的方法失敗的原因。此代碼位於該方法的底部,因此在檢查了數據庫中的憑據後... –

+0

謝謝Stu Whyte設法使其工作。我比較了代碼後的頁面標題和它的工作正常。 –

相關問題