问题标签 [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.

0 投票
1 回答
669 浏览

ruby - SitePrism gem-如何根据环境动态设置_url?

我正在将应用程序的浏览器内测试转换为使用 SitePrism gem。在 gem 自述文件中,我看到以下内容:

我预计需要在多个环境(即本地和临时服务器上)运行这些测试。我想知道如何动态调用 Capybara 的 app_host 方法。我会在我的 spec_helper 文件中添加这样的内容吗?

谢谢。

0 投票
3 回答
2187 浏览

ruby - SitePrism 页面未初始化的常量错误

我已将此添加到我的 spec_helper 中:

我的页面是这样的:

我的 rspec 是这样的:

我不断收到的错误是:

失败:

1) 关于页面测试失败/错误:about = AboutPage.new NameError: uninitialized constant AboutPage # ./about_spec.rb:6:in `block (2 levels) in '

0 投票
2 回答
674 浏览

capybara - 使用site_prism,如果我想使用名为@current_page 的变量,我不知道最佳实践

你看,有时在我的代码中我需要放置一个全局变量来设置 current_page(在一个步骤中)并重用它(在另一个步骤中)

但是我和我的同事有一些维护问题,因为有时,当我们阅读代码时,我们不明白 @current_page 是什么页面?

在这种情况下,最佳做法是什么。

您如何使用“current_page”变量而不存在维护问题或歧义?

0 投票
1 回答
514 浏览

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:insection' /home/mengen/projects/cdris_test_ui/features/support/page_models/test_ui_page.rb:4:in TestUIPage' /home/mengen/projects/cdris_test_ui/features/support/page_models/test_ui_page.rb:1:in (root)' org/jruby/RubyKernel.java:1065:in require' /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:in require' /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:in require' org/jruby/RubyKernel.java:1081:inload' /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 :in load' /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'org load' /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:in each' /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:in load_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:in load_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:in eval' /home/mengen/.rvm/gems/jruby-1.7.13@cdris_test_ui/gems/cucumber-1.3.17/bin/cucumber:13:in (root)'

Site Prism 页面模型:

0 投票
0 回答
168 浏览

ruby - 当我想与页面上的元素进行交互时,是否需要 .load 页面?

我有 Selenium/Java 背景,第一次使用 Ruby/Capybara/Site Prism。

我想创建一个对象,然后在不使用 .load 方法的情况下与页面上的元素进行交互,但在单击链接以访问构成我的对象的页面之后。

我有一个这样的对象:

我的代码如下所示:

我得到的错误是:

OpportunityObject 的分配没有像我预期的那样发生。我希望@opportunity 是一个 OpportunityObject,其可访问成员是 event_date。@opportunity 似乎是一个 OpportunityObject,但没有定义任何成员。

我不想加载页面,因为当时我可能不知道 URL 是什么。但是,我确实知道我将在页面上并希望使用特定页面元素定义对象。

0 投票
1 回答
1749 浏览

ruby - 如何等到元素在 Capybara 中消失?

注意:当我写完这个问题时,解决方案本身就出现了,但也许其他人可能会觉得这很有用,或者可以提供替代方案。

我已阅读以下文章:

但仍然无法拼凑出这个特定问题的答案。

我想等到页面上的元素消失后再继续。

此元素与我要单击的另一个元素重叠。当我尝试单击目标元素时,我收到此错误:

我尝试使用.trigger('click')and .trigger(:click)even,但似乎没有效果。

我尝试过的其他一些事情(“东西”是消失的元素):

0 投票
2 回答
1367 浏览

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方法吗?

0 投票
2 回答
170 浏览

ruby - Capybara::ElementNotFound 动态构造元素时的异常

如果我们在跨度标签中有动态内容填充,例如,

当上例中的交易没有关联 sku 时,html 中的 span 元素将如下所示,其中没有任何内容。

如果 SitePrism 元素被定义为查找此元素,例如,

如果“@sample_page”是对我的 Site Prism 页面的引用,我将 sku 称为

我们会得到 Capybara::ElementNotFound 异常

0 投票
2 回答
842 浏览

javascript - 页面对象设计:是否有相当于 Ruby gem“site_prism”的 Javascript

我想知道 Javascript (NodeJS) 中是否有一个用于Protractor的框架,它支持一种干净的方式来定义页面对象上的页面对象元素,就像site_prism一样。我已经检查了星盘,但不太符合目的。

这就是使用site_prism声明性定义页面对象的方式

有谁知道或已经开发了类似上述的解决方案,但对于Protractor。也许有人在内部使用自定义框架,你愿意开源吗?

关于星盘它缺乏集合支持,我正在寻找一种更具声明性的语法;代替

我期待一些更具声明性的东西,例如:

可以在这里进一步挖掘缺少的星盘功能,但我的问题不是星盘本身,而是关于 JS 是否有更好的site_prism等价物。

注意:从软件质量保证和测试迁移问题,因为那里没有得到足够的关注。

0 投票
1 回答
738 浏览

site-prism - 使用 site_prism 时,如何正确设置 url 以便可以使用 rspec .to be_displayed 匹配器?

我的页面模型如下所示:

当我使用

它与观察到的 'events/1/whosecoming' 的 url 不匹配

页面上的所有内容都加载得很好,我相信我只是不明白 set_url 应该如何与参数化一起使用。