Asserter返回多个元素

时间:2017-04-09 09:40:15

标签: c# selenium selenium-webdriver assertions

我正在尝试制作一个同时返回两个元素的方法。这是我的代码:

 this.Wait.Until(ExpectedConditions.ElementExists(By.Id("mm_date_8")));
 this.Wait.Until(ExpectedConditions.ElementExists(By.Id("dd_date_8")));

 return this.Driver.FindElements(By.Id("mm_date_8"), By.Id("dd_date_8"));

但我不知道怎么做对...你能帮助我吗? 提前谢谢!!!

1 个答案:

答案 0 :(得分:1)

我不确定以下语法是否正确。

return this.Driver.FindElements(By.Id("mm_date_8"), By.Id("dd_date_8"));

而你可以尝试做的就是跟随。

List<IWebElement> elements = new List<IWebElement>();
AddElementsToList(elements, this.Driver.FindElements(By.Id("mm_date_8"));
AddElementsToList(elements, this.Driver.FindElements(By.Id("dd_date_8"));
// now in your calling method you can easily index list.
return elements;

public void AddElementsToList(List<IWebElement> elementList, IEnumberable<IWebElement> elementEnumerable)
{
    if (elementEnumerable != null && elementEnumerable.Any())
    {
        elementList.AddRange(elementEnumerable);
    }
}

请注意,我假设FindElements的输出是IEnumerable。但如果是其他类型的收藏品,这个想法仍然保持不变。

如果您必须知道哪个元素属于哪个ID,则可以创建

而不是创建列表
Dictionary<string, IWebElement>

其中string将是你的idKey。