我有运行Poltergeist 1.0.2的Capybara 1.1.4测试套件,在PhantomJS 1.9.2上运行
今天我尝试将Capybara升级到2.1.0&恶作剧者到1.4.1。大多数测试都有效,但js-enabled测试中的一堆page.find()元素会在.click上返回以下错误:
Capybara :: Poltergeist :: ObsoleteNode:您正在尝试的元素 与之交互不是DOM的一部分,也不是当前的 在页面上可见(可能显示:无设置)。这有可能 元素已被另一个元素替换,您打算进行交互 与新元素。如果是这样,你需要做一个新的“发现” 获得对新元素的引用。
奇怪的是:
BUT
有没有人见过这个?我花了几个小时来完成我能想到的每一个疯狂的理论,没有任何东西可以获得点击的元素。 (旁注:“#my-element”只是一个例子。有许多不同的元素有很多不同的ID,但是没有.click)
任何想法都赞赏。
答案 0 :(得分:4)
other answer对我不起作用。我使用了select_option
page.find(:css, "#province").find("option[value='Adana']").select_option
答案 1 :(得分:1)
我替换了找到该元素并使用click_on方法点击它,这对我有帮助。
click_on('My link')
而不是
find('a', text: 'My link').click
但我有另一个问题。我有2个链接。我通过替换
解决了这个问题all('a', text: 'My link').last.click
使用上下文:
within('#overlay') do
click_on "My link"
end
这有帮助。