【问题标题】:selenium is trowing an error as element is not visibleselenium 抛出错误,因为元素不可见
【发布时间】:2017-12-10 16:50:14
【问题描述】:

我有 java 脚本注入将文本发送到隐藏的输入框。但是 webdriver 抛出错误,因为元素不可见,因此无法与之交互。

WebElement tmpElement= driver.findElement(By.className("cwd_input"));
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript(("document.getElementsByClassName('cwd_input')
   [0].click();"),tmpElement); 
tmpElement.sendKeys("T");

【问题讨论】:

  • 有几件事要问。 tmpElement 是页面上唯一一个类名为“cwd_input”的元素吗?为什么要两次选择元素?并使用 Javascript 进行点击?
  • WebDriver 应该模仿用户行为,用户如何在隐藏的输入中输入内容?您要求的内容违反了 WebDriver 背后的主要概念。
  • @Erik M:在应用程序中,我必须单击一个按钮并输入文本,这些文本将存储在输入框中,然后在表格中反映在屏幕上,如果我直接尝试在表格中输入文本,它不允许。当我单击下一步按钮并键入文本时,输入框会刷新,新输入的文本会显示在表格内的屏幕上。我可以通过电子邮件将网页的屏幕截图发给您吗
  • @cathal :是的,只有一个“cwd_input”类元素,因为我没有在 document.getElements 中获得发送键的选项......我先点击然后发送键。我可以让它在 selenium IDE 中工作,它的操作很简单,一个命令单击按钮,另一个命令将密钥发送到 cwd_input,但是在 webdriver 中它失败了。
  • 你能提供你正在处理的元素的html吗?

标签: selenium webdriver


【解决方案1】:

您可以通过 JS 设置输入的值。 代码将类似于:

string scriptToExecute = "document.getElementById("mytext").value = 'New value';";

executor.executeScript(scriptToExecute);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2017-11-10
    • 2018-05-18
    相关资源
    最近更新 更多