使用Selenium C中的CheckBoxList中的提取标签填充CheckedListBox#

时间:2017-10-25 15:53:25

标签: c# selenium

我有一个表单,它使用Selenium转到页面并为用户自动执行任务。更改页面的唯一部分是CheckBoxList,我一直在尝试从中提取标签并将它们镜像到我的表单的CheckedListBox,这样用户就可以在那里进行选择而无需看到页面。

到目前为止,我有这个:

        IList<IWebElement> vehicleGroups = Builder.Driver.FindElements(By.ClassName("vehGrp"));
        String[] vehicleText = new String[vehicleGroups.Count];
        int i = 0;
        foreach (IWebElement element in vehicleGroups)
        {
            vehicleText[i++] = element.Text;
            vehicleGroupList.Items.Add(element.Text);
        }

只要获取正确数量的元素并填充表单,其工作原理,但vehicleText中的所有标签都是空白的(或只是空格。)

其中一个标签的HTML示例是

    <label><input type="checkbox" name="searchQuery.vehicleGroups[0].isSelected" value="on" class="vehGrp">&nbsp;abcd/efgh ijkl mn (opqrst)</label>

我是否遗漏了某些东西,或者是否“弄乱了标签文字? “abcd / efgh ijkl mn(opqrst)”是我所需要的,但它和潜在的元素数量每天都会改变。

1 个答案:

答案 0 :(得分:0)

vehicleGroups<input>元素,而不是围绕它们的<label>元素 - 这些元素没有文字。这是预期的行为。

您需要获取周围的<label>元素,例如使用如下方法: https://stackoverflow.com/a/12194481/7866667

var vehicleGroupInputElements = driver.FindElements(By.ClassName("vehGrp"));
var vehicleGroupNames = vehicleGroupInputElements
    .Select(e => e.FindElement(By.XPath("..")))
    .Select(e => e.Text)
    .ToArray();