2015-12-19 24 views
0

我正在嘗試在上下文中使用Selenium驅動程序與Firefox的Codeception測試中的xpath定位器。具體來說,我試圖點擊郵件正文中的第二個鏈接,並用roundcube查看。

電子郵件的主體是在div使用XPath //div[@class="rcmBody"]

我能得到這個路徑的鏈接:(//div[@class="rcmBody"]//a)[2]

但由於某些原因,當我嘗試//a[2]身體div的範圍內,它會返回iframe中的所有a元素。

從codeception一個例子:

$I->click('//a[2]', '//div[@class="rcmBody"]') 

這將導致網絡驅動程序點擊其中來自身體的div開始前的iframe的第二個鏈接(選擇正確的iframe後)。

我可以直接在Chrome中還測試:

$x('//a', $x('//div[@class="rcmBody"]')[0]) 

這將返回iframe中所有a元素的列表,而不是範圍內。

我怎樣才能讓上下文部分工作?

回答

1

添加點與XPath的開始,使之上下文特定

$I->click('(.//a)[2]', '//div[@class="rcmBody"]') 
     HERE^ 

請注意,這裏的括號也很重要,以獲得所需a後代父。

+0

太棒了! - 似乎在上下文中工作 - 但現在我有問題,它不是在最終結果集上篩選[2]。它看起來像結果是// div [@ class =「rcmBody」] // a [2]而不是(// div [@ class =「rcmBody」] // a)[2]。這是正常的嗎?有沒有辦法解決這個問題? – DAB

+0

Scratch - 我發現它的工作原理是這樣的: $ I-> click('(.// a)[2]','// div [@ class =「rcmBody」]') – DAB

+0

@DAB awesome,感謝分享! – alecxe

相關問題