如何在selenium中键入文本框?

时间:2016-07-07 07:50:11

标签: selenium-webdriver

我使用sendKeys方法,第一次运行我的脚本时它工作但是第二次它不起作用。脚本正在查找元素,但未在文本框中输入。

请建议是否有其他方式在文本框中输入文字。以及为什么它不起作用。

这是我的代码:

System.out.println(driver.findElements(By.xpath("//*[@id='logcomments']")).size()); 
driver.findElement(By.xpath("//*[@id='logcomments']")).sendKeys("Log_Testing"); // textBox 
driver.findElement(By.xpath("//*[@id='postLog']/img")).click(); //enter button

HTML code:

<div style="position:relative;top:40px;"> 
  <div> 
   <span id="actualcommentCount">1</span> 
   <span> Comments </span> 
 </div> 
  <div> 
   <textarea id="logcomments" type="text" style="resize:none; width:80%;" placeholder="Comments"> </textarea> 
   <span id="postLog"> 
     <img style="cursor:pointer;width:45px;color:#337ab7;float: right;margin-top:-5px; margin-right:10px;font-size:30px;" src="images/poll_fly.png"> 
   </span> 
  </div> 
</div>

4 个答案:

答案 0 :(得分:1)

您可以分享页面的HTML吗?

您可以尝试: -

driver.findElement(By.id("logcomments")).sendKeys("Some Text");

您在进行测试时得到的是什么error

答案 1 :(得分:0)

你应该尝试如下: -

WebElement el = driver.findElement(By.id("logcomments"));
el.click();
el.sendKeys("Log_Testing");

driver.findElement(By.xpath("//*[@id='postLog']/img")).click();

注意: - 您需要focus text area才能设置值,因此需要使用el.click()关注text area,因为当您尝试.sendKeys()设置值,但由于焦点不在text area,因此无法设置。

希望它会对你有所帮助.. :)

答案 2 :(得分:0)

如果要在键盘上键入,则需要使用以下机器人类别。但是请确保在开始输入之前已经单击了文本框。

typeKeysStringUsingRobotClass("hey123");
}

public void typeKeysStringUsingRobotClass(String text){
  String[] arr = text.split("");
  for(int i=0; i<arr.length; i++)
     keyPressUsingRobotClass(arr[i]);
}

public void keyPressUsingRobotClass(String key){
  Robot rb = new Robot();
  if(key.equalsIgnoreCase("A")){ rb.keyPress(KeyEvent.VK_A); rb.keyRelease(KeyEvent.VK_A);
  if(key.equalsIgnoreCase("B")){ rb.keyPress(KeyEvent.VK_B); rb.keyRelease(KeyEvent.VK_B);
  .
  .
  .
  if(key.equalsIgnoreCase("0")){ rb.keyPress(KeyEvent.VK_0); rb.keyRelease(KeyEvent.VK_0);

}

答案 3 :(得分:0)

我的建议是尝试执行 javaScript 将文本添加到文本框。

JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;  
jsExecutor.executeScript("document.getElementById('logcomments').value='Yourvalue is here'"); 

此外,如果有异常或错误,请发帖。没有它,就很难找到解决方案。