Ceci est ma première question ici, alors s'il vous plaît nus :)
J'essaie d'obtenir le sélénium webdriver d'attendre qu'un élément soit visible, sinon il devrait utiliser l'autre. p>
Ceci est mon code, lancez System.ArgumentException Le chemin n'est pas de forme légale. P>
public static class WebDriverExtensions { public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds) { var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)); return wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(by)).FindElement(by); } }
3 Réponses :
Il semble que le séléniumwebdriver ne soit pas sur le bon chemin. Veuillez vérifier que le pilote Web de sélénium et les dll de support sont sur le bon chemin.
Salut, le webdriver démarre bien. Se bloque uniquement lorsque cette méthode est utilisée.
ArgumentException est levé quand l'un des arguments fournis à une méthode n'est pas valide. Détails:
IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("XPath_identifying_the_element_uniquely")));
FindElement ()
ne prend qu'un seul argument et est définie comme suit:
IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("CssSelector_identifying_the_element_uniquely")));
Dans vos essais de code, vous avez tenté d'envoyer 2 arguments à la méthode FindElement ()
comme suit:
if (driver.FindElement(By.Id("ember20")).Displayed)
CssSelector
:
IWebElement FindElement( By by ) Parameters: by Type: OpenQA.Selenium.By The locating mechanism to use. Return Value: Type: IWebElement The first matching IWebElement on the current context.
XPath
:
[System.Runtime.InteropServices.ComVisible(true)] [System.Serializable] public class ArgumentException : SystemException
Assurez-vous que:
Vous pouvez trouver une discussion pertinente dans:
Salut! La solution renvoie toujours la même erreur. appréciez votre temps!
@NecronomiconCoding Vérifiez la réponse mise à jour et faites-moi savoir le statut.
J'ai rencontré le même problème, dans mon cas, le package nuget Costura était le problème. Le package regroupe tous les fichiers .dll référencés et les intègre dans l'exe.
J'ai supprimé toutes les dépendances et désinstallé le paquet, maintenant il fonctionne enfin!
utiliser un try catch au lieu de if / else
le fait est que l'élément existe, il ne semble même pas attendre le chargement de l'élément