2013-08-06 49 views
3

我的公司網站僅與IE兼容。所以我不能使用IDE來記錄webdriver腳本。 有HTML頁面有大約100或200(不是確切數量)的文本框和下拉菜單。WebDriver:不使用Selenium IDE的自動代碼生成

編寫java代碼來自動化這是非常繁瑣的。

有人可以提供工具或實用工具來閱讀HTML文件本身並生成相應的代碼嗎? 還是指導我如何開發一個實用程序來滿足我的需求?

例如:

考慮這樣

<html> 
<body> 
<input name = "employee_name" /> 
<select id = "designation"> 
<option value = "MD">MD</option> 
<option value = "programmer"> Programmer </option> 
<option value = "CEO"> CEO </option> 
</option> 

<body> 
</html> 

一個HTML文件。如果我把這個文件作爲輸入到程序就會產生我這樣

WebDriver driver = new InternetExplorerDriver(); 

WebElement employee_name = driver.findElement(By.name("employee_name")); 
employee_name.sendKeys("..."); 

Select designation = new Select(driver.findElement(By.id("designation"))); 
designation.selectByVisibleText("..."); 

由於Java文件提前 !

+0

我一直在尋找這樣的實施。我遇到過這樣的問題:[Selenium/WebDriver的自生成測試工件](http://www.youtube.com/watch?v=mSCFsUOgPpw)他們真的不明白他們是如何做到的。 –

+0

用於該演示文稿的代碼是:https://github.com/mmerrell/tastymonster –

+0

試試[this](http://fire-ie-selenium.googlecode.com/files/Fire-IEBrowser1.4.xlsm) 它可以有一些幫助。 – Hemanth

回答

2

您應該使用「硒生成器」,而不是「硒IDE」,但是,在理論上,你可以得到一個頁面中的所有相似的元素組中,像這樣:

List<WebElement> bodyinputs = driver 
     .findElements(By.xpath("//div[@class='body']/input")); 
List<WebElement> footeranchors = driver 
     .findElements(By.xpath("//div[@class='footer']/a")); 

然後,對每個這些羣體,可以通過列表循環和使用JavaScriptExecutor評估,找出每個元素的XPath和中的XPath存儲在每個元素一個哈希表:

protected String getXPath() { 
     String jscript = "function getPathTo(node) {" + 
      " var stack = [];" + 
      " while(node.parentNode !== null) {" + 
      " stack.unshift(node.tagName);" + 
      " node = node.parentNode;" + 
      " }" + 
      " return stack.join('/');" + 
      "}" + 
      "return getPathTo(arguments[0]);"; 
     return (String) driver.executeScript(jscript, webElement); 
    } 

然後,最後一步,你可以使用HashTable作爲輸入自動生成「By locators」。

但即使你這樣做,你仍然需要編寫代碼來智能地找出哪些定位器得到哪些輸入,哪些不輸入。