J'ai deux classes: textelement code> c'est une extension de sélénium avec certaines propriétés de texte (le texte renvoie la chaîne de l'élément) et l'autre est arraytextelement code> qui est essentiellement un Array de textelement code> Objets. /// <summary>
/// Finds the first element that matches the text
/// </summary>
public static TextElement Find(this ArrayTextElement<TextElement > list, string text)
{
try
{
return list.Items.First(item => item.Text.Equals(text));
}
catch (Exception)
{
throw new NotFoundException($"Requested element with text: '{text}' wasn't found.");
}
}
/// <summary>
/// Finds the first element that contains the text
/// </summary>
public static TextElement FindByContains(this ArrayTextElement<TextElement > list, string text)
{
try
{
return list.Items.First(item => item.Text.Contains(text));
}
catch (Exception)
{
throw new NotFoundException($"Requested element with text: '{text}' wasn't found.");
}
}
3 Réponses :
Vous pouvez simplement passer un et appelez-le comme ceci: p> func
Vous pouvez refroidir les deux méthodes en un en passant un et pour l'appeler avec l'un ou l'autre Func contient code> ou est égal à code> vous feriez ceci: P>
Si je vous comprends correctement, vous pouvez transmettre un paramètre supplémentaire pour indiquer si vous souhaitez utiliser une correspondance exacte ou une partie partielle. Ce qui suit est bon si vous les seules recherches que vous souhaitez faire sont exactes ou partielles. Les autres réponses données ici sont beaucoup plus polyvalentes, mais cette version est un peu plus facile à maintenir. Pour l'utiliser: P> TextElement textElem = list.Find("abcdef", [true|false]);
Et comment l'appeleriez-vous?
Merci, mais cela semble fonctionner pour deux cas uniquement à cause du paramètre booléen, alors je vais utiliser la réponse acceptée
Oui, c'est vrai, comme je l'ai expliqué. Si vous n'avez besoin que de vérifier des égaux ou contient, cela est plus facile à maintenir.
De la même manière Premier () Est-ce qu'il .
ouais, mais je dois utiliser des égaux strictement pour certains cas et parfois j'utilise contient
Avez-vous réussi à le faire avec le premier ()? Je peux voir que vous avez, car vous avez inclus ce code dans votre question. Vous passez deux différentes fonctions prédéfinies comme paramètres à la première ().
J'utilise d'abord comme méthode, les deux fonctions fonctionnent, j'ai juste besoin de les unifier dans une
Vous appelez en premier () dans deux endroits différents de votre question. Pouvez-vous identifier le type de choses que vous passez comme paramètres à la première () dans ces deux endroits? Qu'est-ce que
item => item.text.contains (texte) code>?item => item.text.contains (texte) code> est une fonction prédéfinie, que vous passez en tant que paramètre à une autre fonction.Oui, ils sont 2 fonctions différentes. On trouve un élément utilisant des égaux et les autres utilisations contiennent. La propriété de texte renvoie le texte de l'élément, qui dans mon cas est une extension de sélénium