【问题标题】:Webdriver sendkeys() not working . Using javascript also failingWebdriver sendkeys() 不工作。使用 javascript 也失败了
【发布时间】:2014-11-16 15:12:06
【问题描述】:

尝试使用 webdriver sendkeys() 函数为文本字段发送/设置文本

这里是 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]");
  • 尝试了以下选项。但是所有人都无法将文本发送到 EmailTemplateEditorTemplateName 文本字段

    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() 正在工作。

  • 有趣的是 getText() 正在使用相同的 xpath 处理相同的文本字段。 String val=driver.findElement(DesignerLocators.EmailTemplateEditorTemplateName).getText();
  • 只有 sendKeys() 不起作用。并且不会抛出任何错误。
  • 请帮我在我的文本字段中设置/发送文本。

【问题讨论】:

  • 请分享您遇到的错误或异常
  • sendKeys() 成功执行,但文本字段中未设置文本。所以我没有收到任何错误或异常。
  • 如果使用原生 javascript?
  • 是的..即使使用 javascript 无法在文本字段中设置/发送文本。
  • 我在您的 HTML 中看不到任何输入元素。看起来您正在尝试将键发送到 div 元素?

标签: java javascript selenium xpath selenium-webdriver


【解决方案1】:

你试过了吗:

既然你说 Click 有效,

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

或尝试使用builder click和activeElement,如下所示

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

【讨论】:

    【解决方案2】:

    Selenium/Webdriver 中没有直接的选项来设置“div”标签中的值。

    您需要使用JavascriptExecutor 设置属性innerHTML,如下所示:

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

    【讨论】:

      【解决方案3】:

      检查并查看最新版本的驱动程序(chrome 或 firefox)是否根据浏览器版本使用。请先进行此基本验证。这主要解决了这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-21
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多