问题标签 [site-prism]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - SitePrism gem-如何根据环境动态设置_url?
我正在将应用程序的浏览器内测试转换为使用 SitePrism gem。在 gem 自述文件中,我看到以下内容:
我预计需要在多个环境(即本地和临时服务器上)运行这些测试。我想知道如何动态调用 Capybara 的 app_host 方法。我会在我的 spec_helper 文件中添加这样的内容吗?
谢谢。
ruby - SitePrism 页面未初始化的常量错误
我已将此添加到我的 spec_helper 中:
我的页面是这样的:
我的 rspec 是这样的:
我不断收到的错误是:
失败:
1) 关于页面测试失败/错误:about = AboutPage.new NameError: uninitialized constant AboutPage # ./about_spec.rb:6:in `block (2 levels) in '
capybara - 使用site_prism,如果我想使用名为@current_page 的变量,我不知道最佳实践
你看,有时在我的代码中我需要放置一个全局变量来设置 current_page(在一个步骤中)并重用它(在另一个步骤中)
但是我和我的同事有一些维护问题,因为有时,当我们阅读代码时,我们不明白 @current_page 是什么页面?
在这种情况下,最佳做法是什么。
您如何使用“current_page”变量而不存在维护问题或歧义?
site-prism - Site Prism:创建 Sections 后,我在 gem 代码深处得到一个 Rack::File 参数错误,我用错了吗?
当 site_prism 页面模型使用部分时,尝试运行 cucumber 时出现此错误。我做了一个更简单的页面,没有可以正常工作的部分。
Rack::File headers 参数在 Rack 1.5 之后替换了 cache_control。您应该提供节类作为块或作为第二个参数 (ArgumentError)
全栈跟踪:
home/mengen/.rvm/rubies/jruby-1.7.13/bin/jruby -S bundle exec cucumber --format progress -t ~@exclude --profile default Rack::File headers 参数替换 Rack 1.5 后的 cache_control。您应该提供部分类作为一个块,或者作为第二个参数 (ArgumentError) /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/site_prism-2.6/lib/site_prism/element_container.rb: 173:in
extract_section_options' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/site_prism-2.6/lib/site_prism/element_container.rb:21:in
section' /home/mengen/projects/cdris_test_ui/features/support/page_models/test_ui_page.rb:4:inTestUIPage' /home/mengen/projects/cdris_test_ui/features/support/page_models/test_ui_page.rb:1:in
(root)' org/jruby/RubyKernel.java:1065:inrequire' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:1:in
(root)' /home/mengen /.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:inrequire' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in
load_dependency' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:inrequire' org/jruby/RubyKernel.java:1081:in
load' /home/mengen/projects/cdris_test_ui/ features/support/cdris_test_ui.rb:6:in(root)' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:1:in
(root)' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:245 :inload' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in
load_dependency'/home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/activesupport-3.2.11/lib/active_support/dependencies.rb :245:in load_code_file'orgload' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/../lib/cucumber/rb_support/rb_language.rb:95:in
/jruby/RubyArray.java :1613:ineach' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/../lib/cucumber/runtime/support_code.rb:180:in
load_file' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/../lib/cucumber/runtime/support_code.rb:83:inload_files!' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/../lib/cucumber/runtime/support_code.rb:82:in
加载文件!/home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/../lib/cucumber/runtime.rb:184:inload_step_definitions' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/../lib/cucumber/runtime.rb:42:in
run!org/jruby/RubyKernel.java:1081:inload' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/../lib/cucumber/cli/main.rb:47:in
执行!org/jruby/RubyKernel.java:1101:ineval' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/cucumber:13:in
(root)'
Site Prism 页面模型:
ruby - 当我想与页面上的元素进行交互时,是否需要 .load 页面?
我有 Selenium/Java 背景,第一次使用 Ruby/Capybara/Site Prism。
我想创建一个对象,然后在不使用 .load 方法的情况下与页面上的元素进行交互,但在单击链接以访问构成我的对象的页面之后。
我有一个这样的对象:
我的代码如下所示:
我得到的错误是:
OpportunityObject 的分配没有像我预期的那样发生。我希望@opportunity 是一个 OpportunityObject,其可访问成员是 event_date。@opportunity 似乎是一个 OpportunityObject,但没有定义任何成员。
我不想加载页面,因为当时我可能不知道 URL 是什么。但是,我确实知道我将在页面上并希望使用特定页面元素定义对象。
ruby - 如何等到元素在 Capybara 中消失?
注意:当我写完这个问题时,解决方案本身就出现了,但也许其他人可能会觉得这很有用,或者可以提供替代方案。
我已阅读以下文章:
此线程: https ://groups.google.com/forum/#!topic/ruby-capybara/Mz7txv1Sm0U
这个 poltergeist 问题:https ://github.com/jnicklas/capybara/issues/19
这个博客:https ://nulogy.com/articles/sleep-is-for-the-weak#.VNVcIrDF8vs
还有这个stackoverflow问题:Capybara synchronize with has_no_css?
但仍然无法拼凑出这个特定问题的答案。
我想等到页面上的元素消失后再继续。
此元素与我要单击的另一个元素重叠。当我尝试单击目标元素时,我收到此错误:
我尝试使用.trigger('click')
and .trigger(:click)
even,但似乎没有效果。
我尝试过的其他一些事情(“东西”是消失的元素):
javascript - Capybara Set 更改值后不触发事件
小心使用 'set' 而不是其他内置方法,因为它在更改值后不会触发事件,正如这里的评论中指出的那样:如何在 Capybara 中使用 fill_in 和 find (如果可能)
例如
find(:css, "input[id$='donation_pledge_hundreds']").set("10")
我正在使用 ruby、capybara 和 site-prism。据我了解,站点棱镜旨在通过获取水豚节点元素,然后在它们上调用方法,例如单击来使用
我需要设置文本框的值,因此尝试在相关的水豚节点元素上调用 set。不幸的是,这并没有触发相关的 javascript。
我应该如何解决这个问题?我应该只使用水豚fill_in
方法吗?
ruby - Capybara::ElementNotFound 动态构造元素时的异常
如果我们在跨度标签中有动态内容填充,例如,
当上例中的交易没有关联 sku 时,html 中的 span 元素将如下所示,其中没有任何内容。
如果 SitePrism 元素被定义为查找此元素,例如,
如果“@sample_page”是对我的 Site Prism 页面的引用,我将 sku 称为
我们会得到 Capybara::ElementNotFound 异常
javascript - 页面对象设计:是否有相当于 Ruby gem“site_prism”的 Javascript
我想知道 Javascript (NodeJS) 中是否有一个用于Protractor的框架,它支持一种干净的方式来定义页面对象上的页面对象元素,就像site_prism一样。我已经检查了星盘,但不太符合目的。
有谁知道或已经开发了类似上述的解决方案,但对于Protractor。也许有人在内部使用自定义框架,你愿意开源吗?
关于星盘它缺乏集合支持,我正在寻找一种更具声明性的语法;代替
我期待一些更具声明性的东西,例如:
可以在这里进一步挖掘缺少的星盘功能,但我的问题不是星盘本身,而是关于 JS 是否有更好的site_prism等价物。
注意:从软件质量保证和测试迁移问题,因为那里没有得到足够的关注。
site-prism - 使用 site_prism 时,如何正确设置 url 以便可以使用 rspec .to be_displayed 匹配器?
我的页面模型如下所示:
当我使用
它与观察到的 'events/1/whosecoming' 的 url 不匹配
页面上的所有内容都加载得很好,我相信我只是不明白 set_url 应该如何与参数化一起使用。