如何通过使用C#和Selenium使用InnerHTML进行搜索来查找元素

时间:2014-04-21 19:54:07

标签: c# javascript jquery html selenium

我希望通过搜索匹配的innerHTML字符串来获取特定的元素id。例如,我想找到具有innerHTML“Start of Car”的元素id。

enter image description here

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?

1 个答案:

答案 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;
}

http://jsfiddle.net/jayblanchard/5UvFE/1/