如何在 Java 中使用 Selenium WebDriver (Selenium 2) 输入文本框?

Posted

技术标签:

【中文标题】如何在 Java 中使用 Selenium WebDriver (Selenium 2) 输入文本框?【英文标题】:How to type in textbox using Selenium WebDriver (Selenium 2) with Java? 【发布时间】:2013-05-05 02:07:20 【问题描述】:

我正在使用 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?");
  


【问题讨论】:

出了什么问题?它会抛出异常吗?如果是的话,从哪一行开始? 是的,它正在抛出 java.lang.NullPointerException,我在 webdriver 的 firefox 浏览器中看不到任何事情发生 您能否将完整的错误信息粘贴到您的问题中? 为什么要将 Selenium-RC 与 Selenium WebDriver 混为一谈?我会全程使用 WebDriver。 自从您编辑后,您的“selenium”变量没有启动,这可能会导致 NullPointerException,您也不需要它,因为 WebDriver 在执行任何操作之前会等待页面加载。 【参考方案1】:

您也可以使用 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);

【讨论】:

【参考方案2】:

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

希望这会有所帮助。 :)

【讨论】:

【参考方案3】:

试试这个:

    driver.findElement(By.id("email")).clear(); 
driver.findElement(By.id("email")).sendKeys("emal@gmail.com");

【讨论】:

【参考方案4】:

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

代码如下:

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.
        

【讨论】:

【参考方案5】:

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

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

但是NullPointerException 的原因是您的变量driver 从未启动过,您在变量wb 中启动FirefoxDriver 从未被使用过。

【讨论】:

我是 selenium 和学习表单网络的新手。你能自定义我的代码吗? 我可以,但这不是学习的重点。答案就在那里,您需要做的就是在您的代码中暗示这一点。另外我会(再次)建议你放弃 SeleniumRC,因为它已经过时了。 如果有人不同意我的观点,请随时编辑我的代码并满足用户需求。 现在我根据你编辑我的代码,但它仍然无法正常工作。 你还在收到 NullPointerException 吗?哪条线?【参考方案6】:

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

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

【讨论】:

感谢 Omkar 我解决了这个问题。如果你喜欢我的回答,请点赞。 我可以为您的答案投票。它并没有解决我的整个问题,所以我没有接受它抱歉......

以上是关于如何在 Java 中使用 Selenium WebDriver (Selenium 2) 输入文本框?的主要内容,如果未能解决你的问题,请参考以下文章

如何搭建selenium+java环境搭建

Selenium Web自动化测试学习

如何在 Java 中执行 Selenium 测试

如何使用java中的selenium Web驱动程序中的分页搜索表中的元素

如何使用 javascript 使用 selenium Webdriver 使用 java 设置所选 Web 元素的属性?

我已使用 selenium web 驱动程序 JAVA 将产品添加到手推车中,然后将其从购物车中删除。我如何断言产品是不是被移除?