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

标签 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?

最佳答案

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

关于c# - 如何使用 C# 和 Selenium 通过 InnerHTML 搜索来查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204886/

相关文章:

c# - Microsoft OracleClient迁移到ODP.NET时报错 "ORA-03135: Connection lost contact"是什么原因

c# - 创建代表一系列连续任务的任务

c# - 异步调用是需要在当前进程中多出一个线程还是使用线程池中的另一个线程?

javascript - 通过 jQuery AJAX 将字符串数组传递给 C# WebMethod

javascript - 具有多个参数的 jQuery data()?

c# - .NET - 将通用集合转换为数据表

javascript - 从 div 中删除一个类

javascript - 在html中设置数字格式?

php - Spry 选项卡式面板不显示动态数据

javascript - 使用 javascript 播放音频(无 HTML5 或可见播放器)