Watir / Selenium给出错误“元素当前不可交互”

时间:2013-04-01 19:32:01

标签: selenium webdriver watir

我正在尝试使用watir测试我们正在开发的网络应用程序,并且遇到了令人困惑的错误。

有问题的HTML是

<td>
  <div class="filter-container">
    <input name="PersonName" type="text">
  </div>
</td>

窒息的命令是:

b.text_field(:name, "PersonName").set "Robert" 

irb回复的错误是:

Selenium::WebDriver::Error::InvalidElementStateError: Element is not currently interactable and may not be manipulated
from /usr/local/Cellar/ruby/2.0.0-p0/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.31.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
from /usr/local/Cellar/ruby/2.0.0-p0/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.31.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'

(还有几行,但我认为以上是相关内容)

文本框 使用鼠标和键盘“可互动”,所以我不知道为什么watir会跟踪。有什么想法吗?

5 个答案:

答案 0 :(得分:3)

页面上是否可能有多个文本字段,输入名称为PersonName?也许隐藏在页面上的某个地方? Selenium可能会定位到其他文本字段并报告它已被禁用。尝试使用:

b.div(:class, "filter-container").text_field(:name, "PersonName").set "Robert" 

答案 1 :(得分:1)

检查以确保Selenium没有在页面上找到具有相同名称的第二个隐藏元素。

答案 2 :(得分:0)

当您尝试与已禁用的元素进行交互时,会发生这种情况。 请阅读here了解详情。

答案 3 :(得分:0)

我遇到了相同类型的selenium错误消息并发现清除所有浏览器历史记录(浏览和下载历史记录,表单和搜索历史记录,Cookie,缓存,活动登录,离线网站数据和网站首选项)运行代码允许它按预期工作。

这不是一个很好的解决方案,因为我必须在运行代码的每个时间内清除所有。不优雅但功能齐全。

注意:我通过splinter调用selenium并使用firefox作为我的分裂浏览器,以防万一。

答案 4 :(得分:0)

这在我身上经常发生,看起来它试图过早地访问元素。具有两个“确定/取消”按钮的动态模式页面的示例代码:

不起作用:

$this->getSession()->getPage()->pressButton('Cancel');

在我的情况下效果很好:

sleep(1);
$this->getSession()->getPage()->pressButton('Cancel');

可悲的是,我没有找到任何硒解决方案来等待元素“可交互”。