如何指定这个XPATH?

时间:2013-07-23 03:08:12

标签: php xpath selenium mink

鉴于这是我的DOM,它不属于我,所以我可能不会以任何方式修改它,如何根据product-id内部文本选择正确的“click here”链接?请注意,此代码中有3个产品,该链接可以显示在页面的任何位置,因此我必须能够仅根据product-id进行选择。这是针对PHP的behat / mink功能测试,到目前为止我根据产品ID进行的所有尝试都失败了。

<div id = "container">
    <div class = "product">
        <div class="product-detail">
            <span class = "product-id">123-456-789</span>
        </div>
        <div class = "leftblock">
            <div class = "product-info">
                <a><span>Click Here</span></a>
            </div>
        </div>
    </div>

    <div class = "product">
        <div class="product-detail">
            <span class = "product-id">456-789-012</span>
        </div>
        <div class = "leftblock">
            <div class = "product-info">
                <a><span>Click Here</span></a>
            </div>
        </div>
    </div>

    <div class = "product">
        <div class="product-detail">
            <span class = "product-id">345-678-901</span>
        </div>
        <div class = "leftblock">
            <div class = "product-info">
                <a><span>Click Here</span></a>
            </div>
        </div>
    </div>
</div>

例如,这个xpath失败了:

//span[text()='Click Here']/following::span[@class='product-id' and text()='" . $productId . "']

我尝试过使用祖先和其他东西,但还没有。我甚至不确定我是否使用了正确的字符。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我明白了。我可以选择product-id类然后使用/ ..上升到父级,然后使用/返回到适当目标所在的位置。

答案 1 :(得分:0)

尝试以下xpath。用新产品ID替换产品ID。希望这有帮助

  

// div [div / span [text()='123-456-789']] / descendant :: a / span [text()='点击这里']