12

在此处输入图像描述 我正在使用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("nshakuntalas@gmail.com");
          driver.findElement(By.id("u_0_b")).click();
  }
  @After
  public void Close() throws Exception{
      System.out.println("how are you?");
  }

}
4

6 回答 6

18

如果您只使用 Selenium WebDriver,而忘记使用 Selenium-RC,这很简单。我会这样去。

WebDriver driver = new FirefoxDriver();
WebElement email = driver.findElement(By.id("email"));
email.sendKeys("your@email.here");

然而,原因NullPointerException是您的变量driver从未启动过,您从FirefoxDriver一个wb从未使用过的变量开始。

于 2013-05-10T13:14:36.057 回答
8

谢谢朋友,我有答案了。这只有在您的帮助下才有可能。你们都给了我解决这个问题的一线希望。

这是代码:

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, "gati.naveen@gmail.com");
        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.
    }    
}
于 2013-05-11T05:29:08.730 回答
5

您应该在注释中替换WebDriver wb = new FirefoxDriver();为。driver = new FirefoxDriver();@Before

当您driver使用 null 访问对象时,或者您可以将wb引用变量作为全局变量。

于 2013-05-10T12:22:27.167 回答
1

试试这个 :

    driver.findElement(By.id("email")).clear(); 
driver.findElement(By.id("email")).sendKeys("emal@gmail.com");
于 2013-05-14T14:30:33.707 回答
0

使用 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("your@email.here");

希望这会有所帮助。:)

于 2015-05-28T07:30:03.150 回答
0

您也可以使用 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);
于 2016-09-04T16:23:21.220 回答