IE9将兄弟HTML节点视为后代

我正在调查现有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>

如您所见,有5个同级“跨度”节点,每个节点代表5个选项卡中的一个。 但是,当我在IE9的开发人员工具中查看HTML的相同部分时,我看到了这一点:

试图发布一个IE DevTools的屏幕截图,但作为一个新用户,该网站不会让我,所以这里是我所看到的近似值:

[-] <ul class="tab_seet-tabs>
    [-] <span id="forTab">
        [-] <li ...>
            [+] <a ...>
            [-] <span id="forTab_0">
                [-] <li ...>
                    [+] <a ...>
                    [-] <span id="forTab_1">
                        [-] <li ...>
                            [+] <a ...>
                            [-] <span id="forTab_2">
                                [-] <li ...>
                                    [+] <a ...>
                                    [-] <span id="forTab_3">
                                        [-] <a ...>
                                            [+] <strong id="tabOption_tabSet5">

因此,IE似乎错误地解析了HTML,并将兄弟节点跨度节点视为彼此的后代(或者更具体地说,它将每个跨度视为前一跨度的子节点的子节点)。

这不仅仅是开发者工具的一个怪癖。 使用我们的测试工具,我尝试使用以下xpath单击标记为“History”的第5个选项卡:

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

这在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父/兄弟/子节点关系时失败?

链接地址: http://www.djcxy.com/p/65955.html

上一篇: IE9 sees sibling HTML nodes as descendants

下一篇: Wordpress header imgage won't display in IE