我希望通过搜索匹配的innerHTML字符串来获取特定的元素id。例如,我想找到具有innerHTML“Start of Car”的元素id。
public static bool SelectSomething(IWebDriver driver, string searchName)
{
var js = driver as IJavaScriptExecutor;
if (js == null) return false;
var element = (string) js.ExecuteScript("...script to get the ids...");
var x = driver.FindElement(By.Id(element));
x.Click();
return true;
}
我知道可以使用JavaScript循环查找所有innerHTML,但是一旦找到匹配'searchName'字符串的innerHTML,你如何返回id?
答案 0 :(得分:2)
使用jQuery很简单,只需使用:contains - https://api.jquery.com/contains-selector/
http://jsfiddle.net/jayblanchard/5UvFE/
var found = $("td:contains('Start of Car')").attr('id');
这允许您返回相关元素的ID。
另外,这是一种只使用JavaScript的方法 -
function textID(node, text) {
if (node.nodeValue == text) {
return node.parentNode;
}
for (var i = 0; i < node.childNodes.length; i++) {
var returnValue = textID(node.childNodes[i], text);
if (returnValue != null) {
return returnValue;
}
}
return null;
}