【问题标题】:I want to retrieve the ElementID that contains a known string我想检索包含已知字符串的 ElementID
【发布时间】:2015-02-11 01:40:13
【问题描述】:

C# Selenium Webdriver 所以我需要确保我的页面(大约 200 页)都不包含特定的已知字符串。有什么方法可以扫描页面以查找此字符串的存在,如果确实存在,则返回该元素的 ElementID 和整个字符串? 例如我的来源是这样的:

<a id="cancel_order_lnkCancel">Cancel Order</a>

我想在整个页面(&lt;div id="sitewrapper"&gt;)上搜索“取消”这个词并返回两者 cancel_order_lnkCancel;取消订单

谢谢

【问题讨论】:

    标签: c# selenium selenium-webdriver


    【解决方案1】:

    您可以使用 XPath 按文本查找。例如:

    var element = driver.FindElement(By.XPath(string.Format("//*[contains(text(), '{0}')]", value)));
    

    value 是您要搜索的字符串。

    然后获取元素的标记和内容:

    var html = element.GetAttribute("outerHTML");
    var text = element.Text;
    

    var text = element.GetAttribute("innerHTML");
    

    【讨论】:

    • 不会抛出未找到元素的异常吗?
    • 谢谢各位,但我也想返回包含该字符串的实际元素 ID?我可以从我的 IWelement 中检索一个看起来像 0.45616444828920066-1 的值,但我想要的实际 id 是 cancel_order_lnkCancel。嗯
    • 这看起来会起作用:myWebElement.GetAttribute("outerHTML");
    【解决方案2】:

    我没有使用过 C# 绑定,但您可以使用 FindElements 获取包含文本的所有元素的列表。毫无疑问,您可以使用@Jarga 的 xpath。 FIndElements 的好处是它不会向您抛出异常(至少这是在 java 中发生的情况),但如果您为 valueid 获得 null,您必须使用 try catch 来处理 getAttribute。如果您遍历列表,您可以使用 getText 方法获取所有文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2021-06-12
      • 1970-01-01
      相关资源
      最近更新 更多