我使用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>
答案 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'");
此外,如果有异常或错误,请发帖。没有它,就很难找到解决方案。