0
votes

FindElement () lève System.ArgumentException à l'aide de Selenium via C #

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);
        }
    }


2 commentaires

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


3 Réponses :


-1
votes

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.


1 commentaires

Salut, le webdriver démarre bien. Se bloque uniquement lorsque cette méthode est utilisée.



0
votes

Classe ArgumentException

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")));

Méthode FindElement

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")));

Ce cas d'utilisation

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
    

Considérations supplémentaires

Assurez-vous que:

  • ChromeDriver est mis à jour vers ChromeDriver v79. 0 niveau.
  • Chrome est mis à jour au niveau actuel de Chrome Version 79.0 . (conformément aux Notes de version de ChromeDriver v79.0 )
  • Nettoyez votre espace de travail de projet via votre IDE et Reconstruisez votre projet avec les dépendances requises uniquement. li >

Référence

Vous pouvez trouver une discussion pertinente dans:


2 commentaires

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.



0
votes

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!


0 commentaires