【问题标题】:Using htmlagility xpath's to find webdriver elements使用 html agility xpath 查找 webdriver 元素
【发布时间】:2011-04-14 11:57:38
【问题描述】:

我正在使用 htmlagility 包通过表格在大循环中定位元素,因为它比使用通过 webdriver 提供的本机方法快得多。

通过循环定位特定元素后,我得到了它的 xpath,然后将其提供给 webdriver 以返回一个元素。

但是我遇到了一个例外;

OpenQA.Selenium.NoSuchElementException: FindElementByXPath.

//html[1]//body[1]//mpns:multipage[1]//mpns:pageview[1]//table[1]//

[Test]
[Browser(BrowserType.IE)]
public void Simple_HtmlAgility_Xpath()
{
    Browser.GoTo("http://test/");
    Browser.Login().Login_Admin();

    using (Browser.SwitchToFrame("main"))
    {
        var html = new HtmlAgilityPack.HtmlDocument();
        html.LoadHtml(Browser.PageSource);
        var node = html.DocumentNode.SelectSingleNode("//table[@id='testtable']");
        var xpath = node.XPath.Replace("/", "//");
        Log.Debug(xpath);
        var element = Browser.FindElement(By.XPath(xpath));
        Log.Debug(element.Text);
    }
}

页面示例;

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>Welcome</title>        
    </HEAD>
    <body>
        <?XML:NAMESPACE PREFIX="MPNS" /><?IMPORT NAMESPACE="MPNS" IMPLEMENTATION="/webctrl_client/1_0/multipage.htc" />
      <MPNS:MultiPage id="test1">
       <MPNS:PageView>        
        <table width="100%" id="testtable">
            <tr>
                <td>TEST</td>
            </tr>
        </table>                            
       </MPNS:PageView>
      </MPNS:MultiPage>
    </body>
</HTML>

【问题讨论】:

  • 您需要提供一个 XML (HTML) 的小示例,在该示例中您会遇到此异常。没有它,我们只能猜测错误的原因。
  • 嗯似乎将所有内容更改为双斜杠有帮助,也许问题出在 mpns 命名空间
  • 我认为您可以以更标准的兼容模式重构您的页面,将 MPNS 前缀声明为 xmlns:MPNS="SOME_URI" 并使用 CSS 规则 MPNS\:MultiPage, MPNS\:MultiPage {-ms-behavior: url(/webctrl_client/1_0/multipage.htc)}。 IE 有一些特殊的 SGML“命名空间”处理...

标签: c# xpath selenium html-agility-pack webdriver


【解决方案1】:

似乎 Xpath 无法引用 mpns 命名空间,您需要在 XPath 查询中定义它。详情请见this

【讨论】:

    猜你喜欢
    • 2011-09-01
    • 2021-03-31
    • 1970-01-01
    • 2015-08-31
    • 2023-03-18
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多