Capybara/Poltergeist - 等待 JavaScript 完成
Capybara/Poltergeist - Wait for JavaScript completions
通过 devise 登录后,我单击带有 javascript 的按钮,这使一些 HTML 可见。
<button id="btn_simple_search"
class="btn btn-primary btn-md well_button"
data-toggle="button"
>
Search
</button>
调用函数
$("#btn_simple_search").click(function(){
$("#simple_search").toggle(500);
});
我希望水豚测试等到此功能完成(我不知道 - 比如一些回调或其他东西)而不是在我单击其他按钮或 select 之前进行 sleep 0.6
新显示的 HTML 块中的一些选项。我使用 Minitest 作为测试框架。怎么做?
以上 javascript 直接嵌入到页面中。
您可以使用水豚的匹配器 have_content
,它会等待内容出现在页面上:
expect(page).to have_content("Text from your hidden block here")
# click other button
Capybaras 查找器(all/first
除外)、匹配器和会话操作默认为 waiting/retrying 行为,专门用于处理您正在谈论的问题。他们将(默认情况下)等待 Capybara.default_max_wait_time
秒,以便所需的元素出现在页面上。这意味着当您执行需要一些时间的操作并且您想要等待它完成时,您需要指示 Capybara 在页面上寻找一些更改以指示完成的内容。当单击一个使事物可见的按钮时,可能是在寻找出现的文本内容,或者它可能只是告诉它单击一个变得可见的按钮,因为找到该按钮将等待一段时间,直到它变得可见。
其中的一个问题是在页面上动画化的项目。这里的问题是项目变得可见但仍在移动。这可能会导致某些驱动程序(尤其是 Poltergeist,由于无法真正解决的体系结构问题)在页面上的错误位置单击。最好的解决方案是在测试模式下禁用动画,这也将加快您的测试速度,但具体如何执行取决于您使用的生成动画的库。
通过 devise 登录后,我单击带有 javascript 的按钮,这使一些 HTML 可见。
<button id="btn_simple_search"
class="btn btn-primary btn-md well_button"
data-toggle="button"
>
Search
</button>
调用函数
$("#btn_simple_search").click(function(){
$("#simple_search").toggle(500);
});
我希望水豚测试等到此功能完成(我不知道 - 比如一些回调或其他东西)而不是在我单击其他按钮或 select 之前进行 sleep 0.6
新显示的 HTML 块中的一些选项。我使用 Minitest 作为测试框架。怎么做?
以上 javascript 直接嵌入到页面中。
您可以使用水豚的匹配器 have_content
,它会等待内容出现在页面上:
expect(page).to have_content("Text from your hidden block here")
# click other button
Capybaras 查找器(all/first
除外)、匹配器和会话操作默认为 waiting/retrying 行为,专门用于处理您正在谈论的问题。他们将(默认情况下)等待 Capybara.default_max_wait_time
秒,以便所需的元素出现在页面上。这意味着当您执行需要一些时间的操作并且您想要等待它完成时,您需要指示 Capybara 在页面上寻找一些更改以指示完成的内容。当单击一个使事物可见的按钮时,可能是在寻找出现的文本内容,或者它可能只是告诉它单击一个变得可见的按钮,因为找到该按钮将等待一段时间,直到它变得可见。
其中的一个问题是在页面上动画化的项目。这里的问题是项目变得可见但仍在移动。这可能会导致某些驱动程序(尤其是 Poltergeist,由于无法真正解决的体系结构问题)在页面上的错误位置单击。最好的解决方案是在测试模式下禁用动画,这也将加快您的测试速度,但具体如何执行取决于您使用的生成动画的库。