2012-09-20 56 views
9

編輯: 我也試過這種如何抓住剛元素的id - 使用硒的webdriver 2

var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))).ToList(); 

我得到空文本

我試圖找到一種方法,從剛搶ID列表我越來越和下面是我的代碼和我的屏幕打印。

// webdriver的獲取文本列表

下面的代碼返回我的記錄正確的號碼,但它只是給我Text但我Text和一個特定的Text

我試過Id後這樣的:

var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']/tbody/tr/td/span"))).ToList(); 

var webElements2 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']/tbody/tr/td"))).ToList(); 

這...

var webElements3 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']"))).ToList(); 

行的所有代碼給了我正確的回報,但不進行身份。

這裏是我的網頁的打印屏幕:

enter image description here

+0

當你的意思是ID,你是什麼意思?控件的實際ID(ctl00_etc)還是文本本身? ('項目1','項目2'等?) – Arran

+0

控件的實際ID –

回答

13

使用以下方法,在循環中運行,以獲得所有元素的IDS讓所有的元素後:

List<WebElement> element = driver.findElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))); 

for(WebElement ele:elements) 
{ 

     ele.getAttribute("id");  // for getting id of each element 

     ele.getText();    //for getting text of each element 

} 
+0

我從'webElement1'獲取文本並從'webElement4'獲取Id,但合併togather的最佳方法是什麼? –

+0

我沒有得到什麼你的要求?如果你想在循環那個List中運行,你可以得到所有的元素文本或ID。你想獲得一些元素id,一些元素文本意味着你需要在循環內部使用一些條件語句。 – Santoshsarma

0

1)我將嘗試分享我將選擇解決您的問題的方法的想法:

getElementsByTagName('input');//returns array of elements 

2)使用js executor獲取元素的屬性,特別是ID,迭代getElementsByTagName('input')返回的整個數組並獲取它們的ID。代碼 //樣品我用來尋找顏色屬性:

public String jsGetColor(String cssSelector){ 

    JavascriptExecutor js = (JavascriptExecutor) driver; 
    StringBuilder stringBuilder = new StringBuilder(); 
    stringBuilder.append("var x=$(\'"+css+"\');"); 
    stringBuilder.append("return x.css('color')"); 
    String res= (String) js.executeScript(stringBuilder.toString()); 
    return res; 

} 

這簡直是我的assumtion怎麼可能去嘗試。希望它在某種程度上可以幫助你)

0

如果你只需要一個ID:

String id = driver.findElement(By.xpath("//*[contains(text(), 'Your text')]")).getAttribute("id");