3

我正在尝试使用 watir 进行测试,这是一个我们正在开发的 Web 应用程序,但遇到了一个令人困惑的错误。

有问题的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 会犹豫。有任何想法吗?

4

5 回答 5

3

页面上输入名称为 PersonName 的文本字段是否可能不止一个?也许隐藏在页面上的某个地方?Selenium 可能针对其他文本字段并报告它已被禁用。尝试使用:

b.div(:class, "filter-container").text_field(:name, "PersonName").set "Robert" 
于 2013-04-03T19:35:21.593 回答
1

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

于 2013-12-26T18:39:53.733 回答
0

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

于 2013-04-01T20:01:18.030 回答
0

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

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

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

于 2015-11-10T03:19:11.510 回答
0

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

不起作用:

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

在我的情况下效果很好:

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

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

于 2019-04-15T13:09:25.323 回答