我用 splinter 编写了一些浏览器测试,并有一个包含明确定义的行的页面,其中包含它们自己的标题、按钮等。比如:
在我的特殊情况下,我可以获得如下一行:
row = lambda title: browser.find_by_xpath("//div[@class='my-row'][contains(., '{0}')]".format(title))
row1 = row('Row 1')
row2 = row('Row 2')
然后,有了这个兰巴:
button = lambda elmt, text: elmt.find_by_xpath("//a[@class='btn'][contains(.,'{0}')]".format(text))
我可以磨练正确的常规按钮或说类似的话:
assert button(row1, 'Special button')
assert not button(row2, 'Special button')
但是当我调用按钮 lambda 时,它会从其他行返回按钮。
据我了解,xpath 通过这个lamba 查找说,“从elmt 开始,查找嵌套在elmt中的包含给定文本的按钮”。但是,由于我从其他行中获取未嵌套在当前行中的东西,所以我在这里缺少什么?
我的 xpath 有什么问题?