2011-12-07 95 views
2
var value = selenium.GetXpathCount("//div[contains(@id,'spnPriceDetails')]"); 
int clickNo = 1; 
for (var j = 1; j <= value; j++) 
{ 
    if (clickNo == j) 
    { 

     selenium.Click("//div[contains(@id,'spnPriceDetails')]"); 
    } 
    clickNo = clickNo + 1; 
} 

我在一個頁面上有25個相同的鏈接我已確定使用Xpath計數的鏈接總數。我點擊第一個鏈接但是當我嘗試點擊第二和第三鏈接時,每次點擊第一個鏈接而不是第二個和第三個鏈接硒xpath查詢

回答

1

您的代碼沒有指定以後的鏈接,它每次都進行相同的搜索,檢索匹配的所有25個「// div [包含(@ id,'spnPriceDetails')]」,然後單擊結果集合中的第一個匹配。您需要將迭代變量添加到搜索字符串,像這樣:

for (var j = 1; j <= value; j++) 
{ 
    selenium.Click("(//div[contains(@id,'spnPriceDetails')])[" + j + "]"); 
} 

這樣,它會在搜索結果列表通過點擊每個值。

注意:我不記得xpath是否以0索引或1索引開始。它應該是1,但如果不是,你可能需要從0開始你的循環。

+0

我覺得這是問題,但有一個時間的地獄尋找細節s在Selenium文檔中。 –

+0

Tarwn謝謝你的答覆,但我的問題仍然沒有得到尋求..對於特定的元素,我們有id生成deceid =「spnPriceDetails30-IRCMPTZ」出該spnPriceDetails是靜態的,其他部分是動態的。我發現了數字的元素使用該ID即25,但是當嘗試點擊第二個元素時,它總是首先點擊,我不採取整個ID,因爲每次我們搜索,我們得到不同的結果和不同的動態ID ..所以我正在尋找一些的概念同樣的方式就像我們使用的是在QTP,但在這裏我們得到了XPath,CSS硒和索引它不是DIV的工作.... – user1086343

+0

所以,如果你的索引添加到您的搜索字符串就像我在帖子上面顯示,它是否繼續每次都點擊第一個鏈接? – Tarwn

1

我會嘗試在XPath表達式中使用的位置。 我創建了一個流暢的Xpath庫,可能會有所幫助:

的代碼會是這樣的:

for (int i = 1; i <= value; i++) 
{ 
    selenium.Click(XPathFinder.Find.Tag("div").With.Attribute("id"). 
    Containing("spnPriceDetails").And.Position(i).ToXPathExpression()); 
} 

上的XPath庫中的一些詳細信息可以在這裏找到: http://www.unit-testing.net/CurrentArticle/How-To-Write-XPath-for-Selenium-Tests.html

我猜測簡單的xpath字符串的方式將是:

for (int i = 1; i <= value; i++) 
{ 
    selenium.Click(string.Format("//div[contains(@id,'spnPriceDetails') and position()={0}]",i));  }