2012-11-15 26 views
0

比方說,我有一些HTML這樣的:CSS定位器製造商並沒有得到第一ID

<div id="container1" class="wrap"> 
    <div class="somestyle">first content 
    </div> 
</div> 
<div id="container2" class="wrap"> 
    <div class="somestyle">second content 
    </div> 
</div> 
    . 
    . 
    . 
<div id="containern" class="wrap"> 
    <div class="somestyle">nth content 
    </div> 
</div> 

記錄測試硒IDE,在頂部ID和CSS定位建設者, 如果我點擊在「第一個內容:」我得到的東西,如:

css=div.somestyle 

,另一方面,如果我點擊從第二個開始的任何其他內容,我得到(我想):

css=#container2 > div.somestyle, 
    . 
    . 
    . 
css=#containern > div.somestyle 

唯一的例外是第一個元素。

這是爲什麼?這是一個錯誤嗎?我怎樣才能避免,而不必重寫整個HTML結構?

+1

是否點擊第二個內容給你'CSS =#container2的> div.somestyle'? – BoltClock

+0

是的,它確實:唯一的例外是第一個元素。 對於其他每一個,我得到完整的「breadcrumb樣式」css選擇器。 我將編輯問題以指定它。 – Pierpaolo

+0

我不認爲這是一個BUG /問題,juz也許IDE的默認記錄你的選擇由CSS類..你可以嘗試和更改選擇標準使用ID也許.. – cL83

回答

1

由於所有三個容器的類都是相同的,所以要識別它那樣的記錄。它不是。例如 。如果您有三個同名的複選框,則會記錄下來

click | name=vehicle 
click | xpath=(//input[@name='vehicle'])[2] 
click | xpath=(//input[@name='vehicle'])[3] 

在您的代碼中,所有容器的類都相同。

因此,要識別容器IDE代碼將顯示像你提到的。首先它會直接顯示,將被視爲第一項。

css=div.somestyle 

而對於下一個條目就會像

css=#container2 > div.somestyle, 
    . 
    . 
    . 
css=#containern > div.somestyle 
+0

謝謝。但是有沒有辦法改變這種行爲? – Pierpaolo

+0

您可以手動編寫代碼,在這裏您可以使用div ID,因爲它對每個塊都是唯一的。 –

+0

手動編寫測試是我想要避免的。 雖然我願意創建自定義定位器生成器。 – Pierpaolo