2016-09-01 65 views
0

我有一套希望使用硒和Chrome執行的Cucumber測試。我的大部分測試都很好。我目前正在嘗試參數化一個特定的步驟,以便任何使用測試的人都可以簡單地命名他們想要的元素,並且測試會找到它們。Selenium通過Java中的文本提取元素的ID

黃瓜測試看起來是這樣的:

When I go to the "Inventory"/"Inventory" application 

And I search the "Description" field for "a" 

我能得到的時候語句參數很容易,但並聲明是給我多一點麻煩。該頁面本身擁有多套具有一致的ID計劃表的用字「描述」標題中的XPath看起來是這樣的:

//label[@id='m6a7dfd2f_ttrow_[C:2]_ttitle-lb'] 

和輸入字段此XPath

//td[@id='m6a7dfd2f_tfrow_[C:2]-c']/input 

對於「C:」引用緊跟其後的輸入框,位於標籤下方的房間,有相同的ID方案,僅數以下有此XPath

//td[@id='m6a7dfd2f_tfrow_[C:3]-c']/input 

所以每個標籤和輸入框似乎改變了。該數字對於標籤和相應的輸入值都是相同的。我想一些如何掃描頁面的單詞「描述」,並提取與它關聯的元素的ID,然後截斷它的數字。我已經設置了持有其餘的變量,它會希望如下:

@When("^I search the \"([^\"]*)\" field for \"([^\"]*)\"$") 
public void i_search_the_field_for(String searchField, String searchItem) throws Throwable { 
String baseinputXPath = "//td[@id='m6a7dfd2f_tfrow_[c:"; 
String endinputXPath = "]-c']/input"; 
String elementNumber = "The return of some sort of method based on searchField";//TODO 
driver.findElement(By.xpath(baseinputXPath + elementNumber + endinputXPath)).clear(); 
driver.findElement(By.xpath(baseinputXPath + elementNumber + endinputXPath)).sendKeys(searchItem); 
driver.findElement(By.id("search_button_img")).click(); 

如果有一種方法可以拉出僅基於描述文字數量,這將是超級有用。

回答

0

使用xpath在標籤標籤中用單詞「描述」搜索WebElement。

"//label[text(),'Description']" or "//label[.='Description']" or "//label[contains(text(),'Description')]" 

使用getAttribute("id")來獲得id。

+0

這工作就像一個魅力。我現在可以通過傳入一個變量來進行描述。謝謝。 – Jrawr

相關問題