【问题标题】:How to find an element by searching with InnerHTML using C# and Selenium如何使用 C# 和 Selenium 通过 InnerHTML 搜索来查找元素
【发布时间】:2014-06-05 23:02:06
【问题描述】:

我想通过搜索匹配的 innerHTML 字符串来获取特定的元素 ID。例如,我想找到具有 innerHTML“汽车开始”的元素 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?

【问题讨论】:

  • 为什么简单的.Text 不起作用?
  • 我还没有考虑过...... .Text 会去哪里?

标签: c# javascript jquery html selenium


【解决方案1】:

使用 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2018-08-28
    • 2016-01-14
    相关资源
    最近更新 更多