我有一个运行 Poltergeist 1.0.2 的 Capybara 1.1.4 测试套件,在 PhantomJS 1.9.2 上运行
今天我尝试将 Capybara 升级到 2.1.0 和 Poltergeist 到 1.4.1。大多数测试都有效,但是启用 js 的测试中的一堆 page.find() 元素在 .click 时返回以下错误:
Capybara::Poltergeist::ObsoleteNode:您尝试与之交互的元素不是 DOM 的一部分,或者当前在页面上不可见(可能显示:未设置)。该元素可能已被另一个元素替换,并且您打算与新元素进行交互。如果是这样,您需要进行新的“查找”以获取对新元素的引用。
奇怪的是:
- page.find('#my-element') 找到元素就好了
- page.find('#my-element').value 返回正确的值
但
- page.find('#my-element').click 返回上述“ObsoleteNode”错误。
有没有人见过这个?我花了几个小时研究我能想到的每一个疯狂的理论,但没有什么能让元素点击。(旁注:“#my-element”只是一个例子。有许多不同的元素具有许多不同的 ID,它们无法 .click)
任何想法表示赞赏。