web-dev-qa-db-fra.com

Comment taper dans une zone de texte avec Selenium WebDriver (Selenium 2) avec Java?

enter image description here J'utilise Selenium 2 . Mais après avoir exécuté le code suivant, je ne pouvais pas taper dans textbox.

    package Actor;
import org.openqa.*;
import org.openqa.Selenium.By;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.WebElement;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.junit.*;
import com.thoughtworks.Selenium.*;
//import org.junit.Before;
public class Actor {
  public Selenium selenium;
  public WebDriver driver;

  @Before
  public void setup() throws Exception{
  driver = new FirefoxDriver();
      driver.get("http://www.fb.com");
  }
  @Test
  public void Test() throws Exception{
      //Selenium.type("id=gs_htif0", "test");
      System.out.println("hi");
      // driver.findElement(By.cssSelector("#gb_1 > span.gbts")).click();
          Selenium.waitForPageToLoad("300000000");

          WebElement email=driver.findElement(By.id("email"));

          email.sendKeys("[email protected]");
          driver.findElement(By.id("u_0_b")).click();
  }
  @After
  public void Close() throws Exception{
      System.out.println("how are you?");
  }

}
9
Naveen Chhaniwal

Merci Ami, j'ai eu une réponse. Ceci n'est possible que grâce à votre aide. vous me donnez tous une lueur d’espoir pour résoudre ce problème.

Voici le code:

package facebook;

import org.openqa.Selenium.By;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.WebElement;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.openqa.Selenium.interactions.Actions;

public class Facebook {
    public static void main(String args[]){
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.facebook.com");
        WebElement email= driver.findElement(By.id("email"));
        Actions builder = new Actions(driver);
        Actions seriesOfActions = builder.moveToElement(email).click().sendKeys(email, "[email protected]");
        seriesOfActions.perform();
        WebElement pass = driver.findElement(By.id("pass"));
        WebElement login =driver.findElement(By.id("u_0_b"));
        Actions seriesOfAction = builder.moveToElement(pass).click().sendKeys(pass, "naveench").click(login);
        seriesOfAction.perform();
        driver.
    }    
}
7
Naveen Chhaniwal

C'est simple si vous utilisez uniquement Selenium WebDriver et oubliez l'utilisation de Selenium-RC. J'irais comme ça. 

WebDriver driver = new FirefoxDriver();
WebElement email = driver.findElement(By.id("email"));
email.sendKeys("[email protected]");

La raison de NullPointerException est cependant que votre variable driver n'a jamais été démarrée, vous démarrez FirefoxDriver dans une variable wb qui n'est jamais utilisée.

13
aimbire

Vous devez remplacer WebDriver wb = new FirefoxDriver(); par driver = new FirefoxDriver(); dans votre annotation @Before

Lorsque vous accédez à l'objet driver avec null ou que vous pouvez définir la variable de référence wb en tant que variable globale. 

5
Omkar

Essaye ça : 

    driver.findElement(By.id("email")).clear(); 
driver.findElement(By.id("email")).sendKeys("[email protected]");
1
Julien P.

Une autre façon de résoudre cela en utilisant xpath

WebDriver driver =  new FirefoxDriver();
driver.get("https://www.facebook.com/");
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.findElement(By.xpath(//*[@id='email'])).sendKeys("[email protected]");

J'espère que ça va aider. :)

0

Vous pouvez également utiliser JavaScript si le champ de texte est tramé.

WebDriver driver=new FirefoxDriver();
driver.get("http://localhost/login.do");
driver.manage().window().maximize();
RemoteWebDriver r=(RemoteWebDriver) driver;
String s1="document.getElementById('username').value='admin'";
r.executeScript(s1);
0
Vikas