2012-02-17 36 views
2

一定的一部分,我有一個網頁看起來是這樣的:發現一個頁面的硒

<html> 
... 
<div id="menu"> 
... 
    <ul id="listOfItems"> 
    <!--- repeated block start --> 
    <li id="item" class="itemClass"> 
    ... 
    <span class="spanClass"><span class="title">title</span></span> 
    ... 
    </li> 
    <!-- repeated block end--> 
    <li id="item" class="itemClass"> 
    ... 
    <span class="spanClass"><span class="title">title something</span></span> 
    ... 
    </li> 
    <li id="item" class="itemClass"> 
    ... 
    <span class="spanClass"><span class="title">title other thing</span></span> 
    ... 
    </li> 
</ul> 
... 
</div> 
... 
</html> 

我想知道什麼是標題的XPath的(「標題」,「標題的東西」, 「標題其他事物」)。重點是<li>元素的順序沒有指定。每次頁面加載後它可能會有所不同。有什麼方法如何用xpath發現頁面的特定結構?我有一個關於如何解決這個問題的概念,但是在我要用C#寫出迭代來發現我問你的頁面之前。

在此先感謝!

+1

在java驅動程序api中,有一個'driver.findElements(By.xpath(「// div // span [contains(@class,'title'))'可以工作,希望C#API是類似的。 – ccoakley 2012-02-17 16:05:52

+0

只有2小時後,我注意到我的大括號和引號沒有正確關閉:'driver.findElements(By.xpath(「// div [@ id ='menu'] // span [contains(@類,'title')]「))'。我更喜歡使用包含css類(儘管你應該規範化空白,如果你這樣做的話),以免動態添加類。 id(菜單div或listOfItems ul)只是爲了減少錯誤匹配 – ccoakley 2012-02-17 18:46:35

回答

2

硒是否支持XPath表達式,如:

//span[@class='title'] 

如果是的話,除了使用上面的XPath表達式。它選擇XML文檔中的每個span元素,其class屬性的字符串值爲"title"

我推薦使用像the XPath Visualizer這樣的工具來播放不同的XPath表達式,並查看源XML文檔中突出顯示的選定節點。

+1

除非您確定要查找的元素始終只有一個類,否則不建議使用@ class ='title'。相反,我建議你使用// span [contains(@ class,'title')]。另外,要回答你的問題,y es Selenium確實支持XPath表達式,如發佈的那樣:) – ohaal 2012-02-17 16:22:38

+0

如果您對頁面製作有任何意見,請堅持開發慣例,即不同元素的「類型」具有唯一標識符。 – 2012-02-17 16:39:53

+0

@ohaal:是的,我不需要提醒'class'屬性的值是什麼。我的解決方案解決了作者在這裏提出的具體問題 - 它故意沒有概括,以便專注於具體問題,而不是用潛在的概括來分散操作。 – 2012-02-17 18:25:24

3

首先,id的應該是唯一的,所以在測試時你描繪的網頁不能很好地工作。

我做不過測試,並得到了一些XPath定位來選擇特定標題的工作(雖然我建議你解決你的網頁,而不是實際使用這個的):

//li[@id='item']/span/span 
//li[@id='item'][1]/span/span 
//li[@id='item'][3]/span/span 

如果你所有的三個冠軍後, ,你可以嘗試Dimitre Novatchev's suggestion:

//span[@class='title'] 

這應該得到頁面上的所有標題。

我想說一件事,但是,如果你進入Selenium,我建議你爲Firefox downloadSelenium IDE extension。這對初學者來說是一個很好的工具。它可以幫助您通過在網站上記錄點擊來進行Selenium測試,還可以幫助您自動生成並測試XPath定位器和其他定位器。

又說:我勸你不要做重複的ID元素網站:-)

相關問題