it-roy-ru.com

Как набрать текстовое поле с помощью Selenium WebDriver (Selenium 2) с Java?

enter image description here Я использую Selenium 2 . Но после запуска следующего кода я не смог набрать текстовое поле.

    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

Спасибо друг, я получил ответ. Это возможно только благодаря вашей помощи. Вы все даете мне луч надежды на решение этой проблемы.

Вот код:

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

Это просто, если вы используете только Selenium WebDriver и забыли об использовании Selenium-RC. Я бы пошел так. 

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

Причина NullPointerException, однако, в том, что ваша переменная driver никогда не запускалась, вы запускаете FirefoxDriver в переменной wb, которая никогда не используется.

13
aimbire

Вам следует заменить WebDriver wb = new FirefoxDriver(); на driver = new FirefoxDriver(); в аннотации @Before

Поскольку вы обращаетесь к объекту driver с нулевым значением или вы можете сделать ссылочную переменную wb глобальной переменной. 

5
Omkar

Попробуй это : 

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

Еще один способ решить эту проблему с помощью 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]");

Надеюсь, что это поможет. :)

0
Kumrun Nahar Keya

Вы также можете использовать JavaScript, если текстовое поле размыто.

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