使用Selenium和HTML中的动态ID进行Java测试
Selenium最酷的方面之一是,您不僅可以使用網站進行錄制,還可以將其實際用作junit測試。
首先,我將在Firefox中安裝Selenium(因為這是正式版本)并進行快速測試。 重要的是要注意,Selenium將為您提供多種不同的方式來記住您調用了哪個html標記。 例如,它可以僅調用頁面上的特定ID。
但是,當使用Liferay下的諸如JSF之類的門戶系統時,id值是即時生成的,因此您需要記錄一次測試,然后再也無法成功運行它。
Selenium的一個非常不錯的功能是您可以調用HTML xpath,因此在Liferay示例中,您的代碼仍會找到需要單擊的標記。 可以說我記錄自己登錄下面的頁面…
現在,由于此頁面是使用liferay生成的,因此我可以看到表單的輸入文本ID為…
<input aria-required="true" class="aui-field-input aui-field-input-text aui-form-validator-error" id="_58_login" name="_58_login" type="text" value="" />由于Liferay下的JSF會非常定期地為此文本框創建一個新的ID(我相信每次重啟服務器,盡管它可能會更頻繁,但我相信每次重啟),這意味著我們不能僅僅獲取ID并掛接到它,因為測試將只運行一次。
但是,我們可以做的是通過直接使用html標簽直接連接到liferay中,因為每次Liferay加載JSF時它都不會不同。 我注意到我必須對Liferay中的每個頁面使用相同的技術,因為每次訪問該頁面時,幾乎所有通過JSF呈現的html的id都有一個不同的id。
然后我們可以從文件菜單File | File中將其導出到junit類。 將測試用例導出為…| Java / JUnit 4 / Web驅動程序,它將為我們提供以下用于運行和測試的類。
import static org.junit.Assert.fail;import java.util.concurrent.TimeUnit;import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver;public class TestExample {private WebDriver driver;private String baseUrl;private StringBuffer verificationErrors = new StringBuffer();@Beforepublic void setUp() throws Exception {driver = new FirefoxDriver();baseUrl = "http://localhost:8080";driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);}@Testpublic void testExample() throws Exception {driver.get(baseUrl + "/en_GB/web/myapp/home?p_p_id=58&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&saveLastPath=0&_58_struts_action=%2Flogin%2Flogin");driver.findElement(By.xpath("//span/input")).clear();driver.findElement(By.xpath("//span/input")).sendKeys("user");driver.findElement(By.xpath("//span[2]/span/span/input")).clear();driver.findElement(By.xpath("//span[2]/span/span/input")).sendKeys("pass");driver.findElement(By.xpath("//div/span/span/input")).click();}@Afterpublic void tearDown() throws Exception {driver.quit();String verificationErrorString = verificationErrors.toString();if (!"".equals(verificationErrorString)) {fail(verificationErrorString);}} } 參考:我們的JCG合作伙伴 David Gray在Code Mumble博客上對Java中的Selenium和動態ID進行Java測試 。翻譯自: https://www.javacodegeeks.com/2013/06/java-testing-with-selenium-and-dynamic-ids-in-html.html
總結
以上是生活随笔為你收集整理的使用Selenium和HTML中的动态ID进行Java测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 肥东在售楼盘网上备案流程(肥东在售楼盘网
- 下一篇: 蜜爱直播安卓版(安卓蜜播)