15

编辑:我也试过这个

 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。

这是我的页面的打印屏幕:

在此处输入图像描述

4

3 回答 3

23

使用以下方法获取所有元素后,循环运行以获取所有元素的 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

}
于 2012-09-20T16:26:58.190 回答
0

1)我将尝试分享我选择解决您的问题的方法的想法:

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

2)使用js执行器获取元素的属性,特别是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;

}

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

于 2012-09-20T20:52:59.683 回答
0

如果您只需要一个 id:

String id = driver.findElement(By.xpath("//*[contains(text(), 'Your text')]")).getAttribute("id");
于 2017-04-19T15:50:24.710 回答