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

问题描述 投票:3回答:5

我正在尝试使用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会跟踪。有任何想法吗?

selenium webdriver watir
5个回答
3
投票

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

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

1
投票

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


0
投票

当您尝试与禁用的元素进行交互时会发生这种情况。阅读here了解更多信息。


0
投票

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

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

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


0
投票

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

不起作用:

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

适用于我的情况:

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

可悲的是,我没有发现任何Selenium解决方案等待元素“可互动”。

© www.soinside.com 2019 - 2024. All rights reserved.