编辑: 我也试过这个
var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))).ToList();
我得到空文本
我正试图找到一种方法从我正在获取的列表中获取ID,下面是我的代码和我的屏幕的打印截图。
// WebDriver获取文本列表
下面的代码会返回正确的记录数,但它只是给我Text
,但我追踪的是Text
和Id
的特定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。
这是我页面的打印屏幕:
答案 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");