如何在 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) 输入文本框?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用java中的selenium Web驱动程序中的分页搜索表中的元素
如何使用 javascript 使用 selenium Webdriver 使用 java 设置所选 Web 元素的属性?
我已使用 selenium web 驱动程序 JAVA 将产品添加到手推车中,然后将其从购物车中删除。我如何断言产品是不是被移除?