我有一个方法,我希望能够返回一个IWebElements列表、一个元素名称列表或一个字符串数组。是否可以使用一种方法返回多个数据类型?是否有一种更可行的方法来获得不同的返回类型而不使用一种方法?
/// <summary>
/// Gets all options belonging to this selected tag
/// </summary>
/// <returns>Returns a list of IWebElements</returns>
public List<IWebElement> SelectAllOptions(IWebDriver driver, ref DataObject masterData)
{
//Get the ID of the dropdown menu
DatabaseRetrieval.GetObjectRepository(ref masterData);
var strDropMenuId = masterData.DictObjectRepository["ID"];
//Find the dropdown menu and pull all options into a list
try
{
var dropMenu = new SelectElement(driver.FindElement(By.Id(strDropMenuId)));
return dropMenu.Options as List<IWebElement>;
}
catch (NoSuchElementException exception)
{
masterData.Logger.Log(Loglevel.Error, "Boom: {0}", exception.Message);
}
masterData.Logger.Log(Loglevel.Debug, "No options found for DropDownMenu: {0}", strDropMenuId);
return null;
}发布于 2014-04-28 16:18:26
可以将返回类型更改为
Dictionary<IWebElement, string>一旦编译好了IWebElements的列表,就可以简单地将与IWebElement相关联的字符串添加到字典中返回--调用您的方法的人将同时拥有IWebElement和用于处理的字符串。
var options = dropMenu.Options as List<IWebElement>;
if (options != null)
{
var values = options.ToDictionary(option => option, option => option.Text);
return values;
}发布于 2014-04-28 16:18:40
您不能返回多个类型。但是,你可以:
Tuple代替但这是一个非常糟糕的设计决策,你真的应该考虑避免它。(这通常意味着您的方法做的比它应该做的更多)
发布于 2014-04-28 16:19:02
是的,但您必须使用out参数,如下所示
public List<IWebElement> SelectAllOptions(IWebDriver driver, ref DataObject masterData, out SomeType returnResult1, out SomeType returnResult2)https://stackoverflow.com/questions/23346126
复制相似问题