Vous ne pouvez pas envoyer les clés dans le champ Nom d'utilisateur ebay à l'aide de WebDriver Selenium 3 avec Java et Chrome


Je n'ai pas pu envoyer le texte des clés dans le champ Nom d'utilisateur et mot de passe sur ebay.

Voici le code:

    WebDriver driver = null;
    System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver");
    driver = new ChromeDriver();
    driver.get("http://www.ebay.co.uk");

    WebElement myEbay = driver.findElement(By.linkText("My eBay"));
    myEbay.click();

    WebElement signInForm = driver.findElement(By.id("SignInForm"));

    if (signInForm.isDisplayed())
        System.out.println("Sign in form is displayed");

    WebElement username;

    username = driver.findElement(By.cssSelector("input[placeholder=\"Email or username\"]"));

Il parvient à trouver le lien Mon Ebay et vérifie que le formulaire de connexion existe mais que l'identifiant des champs nom d'utilisateur et mot de passe change après chaque actualisation de la page.

Le nom d'utilisateur cssSelector semble être le problème??

EDIT: J'ai réussi à utiliser XPath mais cet exercice était de faire fonctionner cssSelector car il n'y a aucune raison dans théorie pourquoi ça ne devrait pas!

Author: Dean, 2017-07-02

3 answers

J'ai remplacé le localisateur cssSelector par xpath et cela fonctionne bien avec xpath absolu. Voici le code modifié:

 WebDriver driver = null;
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\vikas\\workspaceNeon\\Eclipse Soft\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://www.ebay.co.uk");

        WebElement myEbay = driver.findElement(By.linkText("My eBay"));
        myEbay.click();

        WebElement signInForm = driver.findElement(By.id("SignInForm"));

        if (signInForm.isDisplayed())
            System.out.println("Sign in form is displayed");

       driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

       WebElement username = driver.findElement(By.xpath("html/body/div[4]/div/div/div/div[5]/div/div[1]/div/div[1]/div[1]/div[2]/div/span/form/div[1]/div[5]/div/div[4]/span[2]/input"));

       username.sendKeys("Vikas");
 0
Author: Vikas Kumar, 2017-07-02 05:55:56

Sélectionnez toutes les entrées dans une liste et recherchez la bonne:

// fld seems to be the class of the input field but looking at all input elements should work too
List<WebElement> inputs = driver.findElements(By.className("fld")); 
for (WebElement input: inputs) { 
    if (inputs.getAttribute("placeholder") == "Email or username") {
        // ...
    }
}
 0
Author: DasEarl, 2017-07-01 22:40:24

Si les éléments web nom d'utilisateur et mot de passe changent fréquemment, recherchez la section div dans la page en utilisant xpath et obtenez le xpath exact de username weblement.

J'espère que cette aide..

 0
Author: Saravana K Yamala, 2017-07-02 02:39:28