如何仅获取元素id-使用SeleniumWebDriver 2

如何仅获取元素id-使用SeleniumWebDriver 2,selenium,webdriver,selenium-webdriver,Selenium,Webdriver,Selenium Webdriver,编辑: 我也试过这个 var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))).ToList(); 我得到了空文本 我正试图找到一种方法,从我得到的列表中获取ID,下面是我的代码和屏幕的打印快照 //WebDriver获取文本列表 下面的代码返回了正确的记录数,但它只给了我文本,但我在查找特定文本的文本和Id 我试

编辑: 我也试过这个

 var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))).ToList();
我得到了空文本

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

//WebDriver获取文本列表

下面的代码返回了正确的记录数,但它只给了我
文本
,但我在查找特定
文本的
文本
Id

我试过这个:

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

而这个

var webElements3 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']"))).ToList();
行的all代码给出了正确的返回值,但没有Id

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


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

}
List element=driver.findElements(By.XPath(“//*[@id='ctl00\u ContentPlaceHolder1\u Control1\u lstcontegory']///input”);
for(WebElement ele:elements)
{
ele.getAttribute(“id”);//用于获取每个元素的id
ele.getText();//用于获取每个元素的文本
}
1)我将尝试分享我选择的解决您问题的方法的想法:

getElementsByTagName('input');//returns array of elements
2) 使用jsexecutor get元素的属性,特别是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;

}

这只是我的假设,我认为尝试是可能的。希望它能对您有所帮助)

如果您只需要一个id:

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

你指的是身份证,你指的是什么?控件的实际ID(ctl00_等)还是文本本身?('Item 1'、'Item 2'等?)控件的实际id我从
webElement1
获取文本,从
webElement4
获取id,但是合并到一起最好的方法是什么?我没有得到您的要求是什么?如果您想在该列表的循环中运行,您可以获取所有元素文本或ID。您想要获得一些元素id,一些元素文本意味着您需要在循环中使用一些条件语句。
String id = driver.findElement(By.xpath("//*[contains(text(), 'Your text')]")).getAttribute("id");