2012-08-22 81 views
0

我在許多地方的許多頁面上使用了我的代碼中的一個元素。具體來說,它是一個日曆元素。該元素包含很多部分,但是,無論使用何地,這些內部部分總是相同的。我想要做的是搜索日曆元素內部的東西,而不管日曆元素在哪裏。Selenium - 如何僅在特定div內搜索元素?

就像一個簡化的情況下,考慮以下因素:現在

<div class="not-calendar"> 
    <a href="/not-calendar-link">A Link</a> 
</div> 
<div class="calendar"> 
    <a href="/calendar-link">A Link</a> 
</div> 

,我願做線沿線的東西:

$this->click("//a[text()='A Link']"); 

但是,這是不明確的。我想爲A Link文本做相同類型的「搜索」,但只能在類別日曆的div內搜索。請記住,我不希望直接XPath到日曆div,因爲我期望它在許多頁面的不同位置顯示。我該如何去做這件事?非常感謝!

回答

1

Xpath是相當強大的,你有沒有試過檢查文檔?

//bbb  Selects all bbb elements no matter where they are in the document 
aaa/bbb Selects all bbb elements that are children of aaa 
aaa//bbb Selects all bbb elements that are descendant of the aaa element, no matter where they are under the aaa element 

你要找的表達://div[@class='calendar']/a

+0

哦,我明白了。我想我對XPath還不夠了解。太棒了,謝謝! – golmschenk

+1

我要中斷並說CSS是優越的,因爲xpath在IE上有主要的性能問題。嘗試:http://sauceio.com/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/ – Greg

+0

我也更喜歡CSS,因爲我習慣了jQuery選擇器。 –