Internet explorer IE9将同级HTML节点视为子节点

Internet explorer IE9将同级HTML节点视为子节点,internet-explorer,xpath,html-parsing,Internet Explorer,Xpath,Html Parsing,我正在调查现有web应用程序的自动测试。我在尝试通过XPath选择某些文档节点时遇到了以下问题 在特定屏幕上,应用程序显示一个包含五个选项卡的选项卡控件。此选项卡控件后面的原始HTML如下所示: <ul class="tab_set-tabs"> <span id="forTab"> <li class="tab_set-tabSelectionAware"> <a href="javascript:voi

我正在调查现有web应用程序的自动测试。我在尝试通过XPath选择某些文档节点时遇到了以下问题

在特定屏幕上,应用程序显示一个包含五个选项卡的选项卡控件。此选项卡控件后面的原始HTML如下所示:

<ul class="tab_set-tabs">
    <span id="forTab">
        <li class="tab_set-tabSelectionAware">
            <a href="javascript:void(0);" id="tabOption_tabSet1">
                <strong id="tabOption_tabSet1" class="">
                    Vendor
                </strong>   
            </a>
        </li>
    </span><span id="forTab_0">
        <li class="tab_set-tabSelectionAware">
            <a href="javascript:void(0);" id="tabOption_tabSet2">
                <strong id="tabOption_tabSet2" class="">
                    Ship To
                </strong>   
            </a>
        </li>
    </span><span id="forTab_1">
        <li class="tab_set-tabSelectionAware">
            <a href="javascript:void(0);" id="tabOption_tabSet3">
                <strong id="tabOption_tabSet3" class="">
                    Comments
                </strong>   
            </a>
        </li>
    </span><span id="forTab_2">
        <li class="tab_set-tabSelectionAware">
            <a href="javascript:void(0);" id="tabOption_tabSet4">
                <strong id="tabOption_tabSet4" class="">
                    Custom
                </strong>   
            </a>
        </li>
    </span><span id="forTab_3">
        <li class="tab_set-tabSelectionAware">
            <a href="javascript:void(0);" id="tabOption_tabSet5">
                <strong id="tabOption_tabSet5" class="">
                    History
                </strong>   
            </a>
        </li>
    </span>
</ul>
这在firefox和chrome中运行良好,但在IE9中找不到节点。但是,如果我在IE9中尝试此xpath,它会起作用:

//form[@id="form"]/ul/span/li/span/li/span/li/span/li/span/li/a[contains(strong,"History")]

你知道什么会导致IE9在解析基本的HTML父节点/同级节点/子节点关系时如此糟糕地失败吗?

你的HTML是无效的。只有li可以是ul/ol的子元素,您也可以在内联元素中放置块元素。+1 musa。只需将id直接添加到每个LI并去掉所有跨度。是的,看起来这确实是原因,谢谢。您可能根本不需要id,它看起来您的id只是数字,您是否可以使用html的可能副本是无效的。只有li可以是ul/ol的子元素,您也可以在内联元素中放置块元素。+1 musa。只需将id直接添加到每个LI,并去掉所有跨度。是的,看起来这确实是原因,谢谢。您可能根本不需要id,您的id似乎只是数字,您可以使用可能的重复id吗
//form[@id="form"]/ul/span/li/a[contains(strong,"History")]
//form[@id="form"]/ul/span/li/span/li/span/li/span/li/span/li/a[contains(strong,"History")]