2016-04-11 31 views
2

我使用C#獲取選中的選項 - 硒的webdriverC#硒:如何計算元素和從選擇元件

我需要測試一個網頁,選擇單元的數量是未知的。它可能是一個,兩個三...在下面的例子中,它包含4個選擇。

這裏有2個問題。

  1. 如何計算選擇標記的數量,以便我可以執行循環以獲取每個選擇標記中的選定選項。

  2. 使用Selenium WebDriver C#獲取選定文本的正確語法是什麼?

謝謝。

<select name="ps_ck$0" id="ps_ck$0" > 
    <option value="A">Active</option> 
    <option value="C">Cancelled</option> 
</select> 

<select name="ps_ck$1" id="ps_ck$1" > 
    <option value="A">Active</option> 
    <option value="X">Cancelled</option> 
</select> 

<select name="ps_ck$2" id="ps_ck$2" > 
    <option value="A">Active</option> 
    <option value="X">Cancelled</option> 
</select> 

<select name="ps_ck$3" id="ps_ck$3" > 
    <option value="A">Active</option> 
    <option value="X">Cancelled</option> 
</select> 

回答

2

您可以使用FindElements()方法找到標記名稱的所有select元素。對於找到的每一個select元素,初始化SelectElement類的實例,並獲得SelectedOption property值:

IList<IWebElement> selectElements = driver.FindElements(By.TagName("select")); 

foreach (IWebElement select in selectElements) 
{ 
    var selectElement = new SelectElement(select); 
    Console.WriteLine(selectElement.SelectedOption.Text); 
} 

注意定位select元素時,我們可以更具體,檢查name屬性使用CSS開始ps_ck選擇器

IList<IWebElement> selectElements = driver.FindElements(By.CssSelector("select[name^=ps_ck]")); 
+0

謝謝你來寫。你的答案幫了很大忙。但如果可能的話,請編輯這一行:'Console.WriteLine(selectElement.SelectedOption);'這不會工作。它應該是'Console.WriteLine(selectElement.SelectedOption.Text);'再次感謝。 –

+0

@LouisTran好點,相應更新。謝謝。 – alecxe

0

硒的webdriver C#代碼:

SelectElement SelectEmployeeName = new SelectElement(driver.FindElement(By.Id("ps_ck$0"))); 
//To count elements 
IList<IWebElement> ElementCount = SelectEmployeeName.Options; 
int NumberOfItems = ElementCount.Count; 
Console.WriteLine("Size of BGL: " + NumberOfItems); 
//Getting drop down values 
for(int i = 0; i < NumberOfItems; i++) 
{ 
String DropDownItems = ElementCount.ElementAt(i).Text; 
Console.WriteLine(DropDownItems); 
} 

//或循環可以作爲

foreach (IWebElement i in ElementCount) 
{ 
String DropDownItems = i.Text; 
Console.WriteLine(DropDownItems); 
}