0

我有一個場景,我用文本'A'填充搜索字段並返回一堆結果。這些結果總是在變化,我只想選擇前5個選項。怎麼可能爲此寫一個Xpath。我正在嘗試使用編碼來編寫驗收測試如何爲改變的搜索結果編寫Xpath

.//*[@id='js_search_table_filter'] - 是搜索表格過濾器。我進入一個與此下面

$this->fillField($_sSelectSearchXPath,"A"); 

中的XPath元素,當我點擊複選框選項對搜索結果是一樣

.//*[@id='assign-9488']. 



<label class="checkbox checked" for="assign-9488"> 

注意,數字不同,他們不是在任何時間順序。

回答

0

我不知道這是否是你追求的,但如果你需要一個節點集的第5個元素,你可以用它後綴:

[position() <= 5] 

例子:

<a> 
    <b>1</b> 
    <c>2</c> 
    <d>3</d> 
    <e>4</e> 
    <f>5</f> 
    <g>6</g> 
</a> 

如果你想從b獲取元素到f,你可以運行/a/*[position() <= 5]

0

我不知道如何codeception/PHP版本的作品,但在紅寶石(的Watir或pageobjectgem),就能找到所有元素與reqular表達式或部分匹配

元素看起來像:

checkboxes(:your_element_name, :id => /assign/) 

注意複選框和複選框之間的區別,它將返回所有包含賦值id的複選框。

在Java webdriver的,你必須

driver.findElements(By.xpath("//checkbox[contains(@id,'assign')]")); 

兩個representatinos(紅寶石和java)返回,其中Java解決方案是使用XPath元件的陣列。你提到的元素是一個標籤,如果你正在尋找的複選框,它可能是這個標籤的子元素和XPath的將是

 //label[contains(@for,'assign')]/checkbox 

基本上,你可以使用「包含」方法XPath來識別你的元素。然後您可以獲取數組的前五個元素。

0

我用這個傢伙,並試圖選擇下拉 (.//*[@type='checkbox'])[1所有tickboxes]