2012-04-25 137 views
1

我正在使用Selenium webdriver。我可以登錄到應用程序,但在註銷時它會卡住,導致它無法找到註銷鏈接。我試圖通過Link和Id找到它。我也試過使用thread.sleep(),但似乎沒有任何工作。運行Selenium時無法找到鏈接測試用例

註銷鏈接出現在所有頁面中。

HTML代碼:

<li>#{loginView.loggedInUser}> 
    <ul><li><h:link value="Administration" outcome="Administration.xhtml" /></li> 
    <li><h:commandLink value="Logout" actionListener="#{loginView.logout}"> 
     <f:param id="userName" value="#{loginView.username}" /> 
    </h:commandLink></li> 
    </ul></li> 

硒代碼:

Thread.sleep(5000); 

WebElement logOut = findElementByLinkText("Logout"); 

logOut.click(); 

assertEquals("Please sign in: ", findElementBySelector("h3.loginTitle.centerAlign").getText()); 
+0

您可以粘貼HTML部分的註銷鏈接嗎?此外,所有頁面上都有註銷鏈接嗎? – 2012-04-25 20:24:55

+0

您是否可以編輯您的問題以包含該頁面的HTML樣本,以及您用於查找該代碼的代碼。沒有這個,我們不能開始幫助你。 – Arran 2012-04-26 10:34:46

+0

它拋出了什麼錯誤?順便說一句,你是否嘗試在Selenium IDE中記錄測試?當我停留在定義定位器的過程中時,我通過Selenium IDE找到它,並將其結果複製到java WebDriver代碼 – 2012-04-26 14:18:10

回答

0
driver.findElement(By.xpath("@value='Logout'")).click(); 
+0

這不是一個工作的。你的意思是'By.xpath(「// * [@ value ='Logout']」)'? – 2013-07-24 08:53:19

2

使用此代碼檢查有多少鏈接存在頁面,如果它包含您的註銷鏈接,那麼你可以點擊它通過使用定位器「linktext」。

public void Link(){ 

     driver.get(baseUrl); 
     HtmlTagFinder links = LinkFinder.links(); 
     List<WebElement> allLinks = (List<WebElement>) links.findFrom(driver); 
     System.out.println(allLinks.size()); 
     int i = 1; 
     for(WebElement link : allLinks){ 
      System.out.println(i); 
      System.out.println(link.getText()); 
      i++; 
     } 

     driver.close(); 
     driver.quit(); 
    } 
相關問題