如何使用Selenium(C#)整理下拉列表的所有值

时间:2015-04-07 11:40:35

标签: c# selenium

有人可以帮忙完成这样的任务:我需要选择drop_down_1,选择第一个选项,然后自动在另一个drop_down_2中显示带有选项的列表,我必须在drop_down_2中选择第一个选项,点击按钮获取结果,之后一些结果显示为删除它的时间,并选择第二个选项,依此类推。 因此,我需要为drop_down_1的每个选项迭代drop_down_2的每个选项。

下面的一些HTML代码:

第一个下拉列表包含许多选项:

<select id="manufacturer-selector" data-bind="value: selectedManufacturer">
<option value=""></option>
<option value="5637148326">Nokia</option>
<option value="5637148327">Sony</option>
<option value="5637148328">Lenovo-new</option>
....

第二个下拉列表包含许多选项:

<select id="product-selector" data-bind="attr: { disabled: countManufacturerProducts() === 0 }, foreach: manufacturerProducts, value: selectedProduct">
<option data-bind="text: Name, attr: { value: ID }" value="5637191581">390</option>
<option data-bind="text: Name, attr: { value: ID }" value="5637201719">390 Screenphone</option>
<option data-bind="text: Name, attr: { value: ID }" value="5637206334">470 Screenphone</option>47

我是否需要创建一个循环并在其中再循环一次?

1 个答案:

答案 0 :(得分:0)

首先 - 使用selenium.support.ui

创建2个选择元素

SelectElement select1 = driver.FindElement(By....);
SelectElement select2 = driver.FindElement(By....);

然后计算选择1中“选项”元素的数量。

var optionCounter1 = driver.FindElements(By...).Count;
var optionCounter2 = driver.FindElements(By...).Count;

for (int currOption1 =1; currOption1 < optionCounter; currOption1 ++)
{
    select1.SelectByIndex(currOption1 );

    for (int currOption2 =1; currOption2 < optionCounter; currOption2 ++)
    {
        select1.SelectByIndex(currOption1);
        select2.SelectByIndex(currOption2);
    }
}