最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

java - Webdriver sendkeys() not working . Using javascript also failing - Stack Overflow

programmeradmin1浏览0评论

Trying to send/set text using webdriver sendkeys() function for text field

Here is the HTML

<table class="gridtable" cellspacing="0" __gwtcellbasedwidgetimpldispatchingfocus="true"    gwtcellbasedwidgetimpldispatchingblur="true" style="width: 100%;">
<thead>
<colgroup>
<tbody style="">
<tr class="GORM0XEDKD GORM0XEDME" onclick="">
   <td class="GORM0XEDJD GORM0XEDLD GORM0XEDMD GORM0XEDNE">
   <td class="GORM0XEDJD GORM0XEDLD GORM0XEDNE GORM0XEDGE">
       <div style="outline:none;" tabindex="0"></div>
   </td>
</tr>
</tbody>
<tbody style="display: none;">
<tfoot style="display: none;">
</table>

Xpath for the text field -
EmailTemplateEditorTemplateName=  By.xpath("//*[contains(@class,'GORM0XEDJD GORM0XEDLD  GORM0XEDNE GORM0XEDGE')]/div[1]");
  • Tried following options. But all are failing to send text to EmailTemplateEditorTemplateName text field

    1. driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName).sendKeys("yahooo");
    
    2. this.WaitForElement(DesignerLocators.EmailTemplateEditorTemplateName);
       WebElement tempname = driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
       JavascriptExecutor rightexecutor = (JavascriptExecutor)driver;
       rightexecutor.executeScript("arguments[0].setAttribute('value','yahoo')", tempname);
    
    3. WebElement Element=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
      Actions builder = new Actions(driver);
      builder.moveToElement(Element).sendKeys("yahoo").build().perform();
    
    4. WebElement Element=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
      Actions builder = new Actions(driver);
      builder.moveToElement(Element).click().sendKeys("yahoo").build().perform();
    
    5. WebElement Element=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
      Actions builder = new Actions(driver);
      builder.moveToElement(Element).click(Element).sendKeys("yahoo").build().perform();
    
  • click() is working.

  • Interestingly getText() is working for the same text field using same xpath. String val=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName).getText();
  • Only sendKeys() is not working. And not throwing any error.
  • Please help me to set/send text in my text field.

Trying to send/set text using webdriver sendkeys() function for text field

Here is the HTML

<table class="gridtable" cellspacing="0" __gwtcellbasedwidgetimpldispatchingfocus="true"    gwtcellbasedwidgetimpldispatchingblur="true" style="width: 100%;">
<thead>
<colgroup>
<tbody style="">
<tr class="GORM0XEDKD GORM0XEDME" onclick="">
   <td class="GORM0XEDJD GORM0XEDLD GORM0XEDMD GORM0XEDNE">
   <td class="GORM0XEDJD GORM0XEDLD GORM0XEDNE GORM0XEDGE">
       <div style="outline:none;" tabindex="0"></div>
   </td>
</tr>
</tbody>
<tbody style="display: none;">
<tfoot style="display: none;">
</table>

Xpath for the text field -
EmailTemplateEditorTemplateName=  By.xpath("//*[contains(@class,'GORM0XEDJD GORM0XEDLD  GORM0XEDNE GORM0XEDGE')]/div[1]");
  • Tried following options. But all are failing to send text to EmailTemplateEditorTemplateName text field

    1. driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName).sendKeys("yahooo");
    
    2. this.WaitForElement(DesignerLocators.EmailTemplateEditorTemplateName);
       WebElement tempname = driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
       JavascriptExecutor rightexecutor = (JavascriptExecutor)driver;
       rightexecutor.executeScript("arguments[0].setAttribute('value','yahoo')", tempname);
    
    3. WebElement Element=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
      Actions builder = new Actions(driver);
      builder.moveToElement(Element).sendKeys("yahoo").build().perform();
    
    4. WebElement Element=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
      Actions builder = new Actions(driver);
      builder.moveToElement(Element).click().sendKeys("yahoo").build().perform();
    
    5. WebElement Element=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
      Actions builder = new Actions(driver);
      builder.moveToElement(Element).click(Element).sendKeys("yahoo").build().perform();
    
  • click() is working.

  • Interestingly getText() is working for the same text field using same xpath. String val=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName).getText();
  • Only sendKeys() is not working. And not throwing any error.
  • Please help me to set/send text in my text field.
Share Improve this question edited Nov 16, 2014 at 15:33 Surajtech asked Nov 16, 2014 at 15:12 SurajtechSurajtech 211 gold badge1 silver badge7 bronze badges 12
  • PLease share the error or exception you are getting – Anirudh Commented Nov 16, 2014 at 15:29
  • sendKeys() executing successfully but text is not setting in text field. So i am not getting any error or exception. – Surajtech Commented Nov 16, 2014 at 15:36
  • and in case of using native javascript? – Anirudh Commented Nov 16, 2014 at 15:37
  • Yes ..even with using javascript failing to set/send text in text field. – Surajtech Commented Nov 16, 2014 at 15:42
  • I don't see any input elements in your HTML. Looks like you are trying to send keys to a div element? – shri046 Commented Nov 16, 2014 at 15:42
 |  Show 7 more ments

3 Answers 3

Reset to default 5

Have you tried this:

Since you said that Click works,

driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName).click();
driver.switchTo().activeElement().sendKeys("Text");

or trying with builder click and activeElement as below

builder.moveToElement(Element).click();
driver.switchTo().activeElement().sendKeys("Text");

There is no direct option in Selenium/Webdriver to set the value in "div" tag.

You need to Set the attribute innerHTML using JavascriptExecutor as below:

   this.WaitForElement(DesignerLocators.EmailTemplateEditorTemplateName);
   WebElement tempname = driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName);
   JavascriptExecutor rightexecutor = (JavascriptExecutor)driver;
   rightexecutor.executeScript("arguments[0].setAttribute('innerHTML','yahoo')", tempname);

Check and see that latest version on driver(chromeor firefox) is being used as per the browser version. Please do this basic verification first. This mostly resolves the issue.

发布评论

评论列表(0)

  1. 暂无评论