私はスプリンターでいくつかのブラウザテストを書いており、独自のタイトル、ボタンなどを含む明確に定義された行を持つページを持っています。
私の特定のケースでは、次のように単一の行を取得できます。
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')
しかし、ボタン ラムダを呼び出すと、他の行からボタンが返されます。
私の理解では、このランバを介して xpath で検索すると、「elmt から始めて、指定されたテキストを含むelmt 内にネストされたボタンを探します」と表示されます。ただし、現在の行にネストされていない他の行から取得しているため、ここで何が欠けていますか?
xpath の何が問題になっていますか?