如何清除用户名文本字段中的默认值,并在selenium webdriver中输入我的值

时间:2015-12-16 08:51:19

标签: java selenium

我尝试了以下代码,但它抛出了异常(ElementNotVisibleException)

FirefoxDriver dr = new FirefoxDriver();
dr.get("http://54.169.235.143/book.html?v=0.03");
System.out.println("First Testcase");
System.out.println(dr.findElement(By.id("user_name")));
dr.findElement(By.id("user_name"));
dr.findElement(By.id("user_name")).click();
dr.findElement(By.id("user_name")).getAttribute("user_name");
dr.findElement(By.id("user_name")).clear();
dr.findElement(By.id("user_name")).sendKeys("student100");

我做错了什么以及如何解决?

2 个答案:

答案 0 :(得分:3)

实际上你的页面需要花时间加载所以web驱动程序需要等到元素可见,下面的代码将解决你的问题:

     WebDriverWait wait= new WebDriverWait(dr,30);
     wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("user_name")));
     dr.findElement(By.id("user_name")).clear();
     dr.findElement(By.id("user_name")).sendKeys("test");

     wait= new WebDriverWait(dr,30);
     wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("pass_word")));
     dr.findElement(By.id("pass_word")).clear();
     dr.findElement(By.id("pass_word")).sendKeys("test");

我刚刚添加了等待元素。

答案 1 :(得分:0)

n 软件测试服务这可以通过多种方式实现,部分选项如上所示,其余如下。

Using java script

driver.executeScript("document.getElementByXpath('element').setAttribute('value', 'abc')");

使用动作类 Actions actions = new Actions(driver);

actions.click(driver.findElement(element) .keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).sendKeys(Keys.BACK_SPACE).build().perform()) ;