如何使用Selenium WebDriver 2获取元素id

时间:2012-09-20 16:05:30

标签: selenium webdriver selenium-webdriver

编辑: 我也试过这个

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

我得到空文本

我正试图找到一种方法从我正在获取的列表中获取ID,下面是我的代码和我的屏幕的打印截图。

// WebDriver获取文本列表

下面的代码会返回正确的记录数,但它只是给我Text,但我追踪的是TextId的特定Text

我试过了:

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();

行的所有代码给了我正确的回报但没有Id。

这是我页面的打印屏幕:

enter image description here

3 个答案:

答案 0 :(得分:20)

使用下面的方法获取所有元素后,运行循环以获取所有元素的ID:

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

}

答案 1 :(得分: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;

}

这仅仅是我的尝试如何尝试。希望它以某种方式帮助你)

答案 2 :(得分:0)

如果您只需要一个ID:

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