问题标签 [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 投票
2 回答
520 浏览

ruby - 检查 Site Prism 中的部分是否具有特定类型的类

在 ruby​​ 中使用 Capybara 并使用 Site Prism 创建页面对象。Http 元素如下所示:

我为此部分创建了类:

然后将部分添加到页面对象:

这个元素可以折叠,唯一表明它的状态(如果它是否折叠)是它的类名,它从

如何找出该元素是否折叠(关闭)?

0 投票
1 回答
229 浏览

ruby - 当页面加载时没有输入元素时,如何使用 Capybara/SitePrism/Ruby 附加文件?

我主要使用 Ruby、Capybara 和 SitePrism 的测试框架,直到现在我成功地使用了 'attach_file(input_element, File.path)' 方法。

我现在已经转移到另一个项目,他们有这个页面,其中有一个“上传按钮”,但在第一次加载时页面中没有任何“输入”元素(检查源代码,也没有隐藏元素,即, 'input' 根本不会出现在页面中)。然后发生的事情是,当用户单击“上传”按钮时,会出现一个窗口弹出窗口,他们可以在其中选择文件,当他们选择该文件时,似乎有一些 javascript 正在运行(我看到了一些与knockout.js,虽然不能 100% 确定这是否是被调用的内容),此时,代码会在页面中创建一个全新的“输入”元素,而该元素最初并不存在。

你知道是否有办法使这些旅程自动化吗?还是这个问题听起来很熟悉,以便我可以研究我能做些什么?

谢谢!

0 投票
1 回答
96 浏览

ruby - Siteprism 部分不会响应 has_element

我正在尝试将 SitePrism 与我的 ruby​​/capybara/selenium 测试套件一起使用,并且我继续收到错误,期望元素响应has_<element_name>?规范的最后一行是失败的原因。它给了我一个错误说:

expected #<PageObjects::Pages::SalesPage:0x00000000066782b0> to respond to 'has_toolbar_title?'

sales_page.rb

工具栏.rb

my_spec.rb

0 投票
3 回答
276 浏览

ruby - 递归检查嵌套元素是否存在

只是为了给你一个背景,我正在使用 Ruby 以及 Selenium、Cucumber、Capybara 和 SitePrism 来创建自动化测试。我有一些测试需要检查页面上某个元素的文本,例如:

但是,我想在调用.text嵌套course_and_section_id元素之前检查所有父元素是否存在。例如,要检查这个特定元素的文本,我会这样做:

有没有办法递归检查Ruby中是否存在这样的东西?可以这样称呼的东西:has_text?(section.top.course.section_id)也许?

0 投票
2 回答
108 浏览

ruby - 如何测试其内容与用户在 Capybara、SitePrism 中的权限不同的页面

使用SitePrism在 Ruby、Capybara 中创建测试。我遇到过这样的情况,我有一个站点,但站点的内容取决于用户拥有的权限。例如,菜单中的元素“admin”仅对管理员可见等一个主要区别是管理员有自己的子域,如 admin.example.com(普通用户的站点是 example.com)。

我必须从管理员和用户的角度对其进行测试,并且我想避免创建两个几乎相同的页面对象。

有没有解决这个问题的正确方法?

0 投票
1 回答
531 浏览

ruby-on-rails - 如何在 Site Prism 中动态加载页面

我有一个文章页面、一个新闻页面和一个评论页面,其中包含一些共享元素。目前,我有不同的步骤来加载和测试共享元素,如下所示。

article_page.feature

article_steps.rb

comment_page.feature

comment_steps.rb

文章.rb

世界/pages.rb

它有效,但还会有更多页面,我想分享一些步骤。我尝试了发送带有页面参数的加载方法和初始化页面对象的各种组合。

shared_pa​​ge_steps.rb

article_page.feature

comment_page.feature

我得到了错误cannot load such file -- article_page (LoadError)

我也试过

shared_pa​​ge_steps.rb

我得到了错误cannot load such file -- article (LoadError)

shared_pa​​ge_steps.rb

我得到了错误uninitialized constant Article (NameError)

看起来好像使用 send(:load) 正在尝试加载文件而不是页面对象。当我将字符串转换为常量时,classify.constantize它也不起作用,我想知道是否需要显式调用 UI::Pages::Article 或 UI::Pages::Comment 但我不知道该怎么做那是动态的。

有什么建议么?

0 投票
1 回答
254 浏览

ruby - 如何使用 ruby​​ capybara/selenium 访问复选框

我通常的获取复选框的方法似乎在这里不起作用......基本上我有一个包含一些数据的表格,但第一个td是一个复选框。我想要做的是单击该复选框,但无论我做什么,它似乎都不会出现在屏幕上,或者至少它不可点击。我已经尝试将 xpath 与td[1],和许多其他排列一起使用td[1]/inputtd[1]/input[@data-role="checkbox"]但没有运气......我正在使用 SitePrism 并且已经在行内,所以我应该能够正确使用这些元素。例如使用td[2]with.text给我Foo没有问题......但它几乎就像复选框不存在一样。

此外,如果我尝试这样做all('input').size或者all('label').size我得到 0,这向我表明,尽管页面上清楚地显示并通过 chrome 开发工具进行了检查,但这些都没有呈现。

0 投票
1 回答
410 浏览

ruby - 使用 page.find 时 Site_Prism 未找到 POM 元素

因此,我使用 SitePrism 为 POM 设置了 Capybara、Cucumber 项目,并且大部分情况下它都可以工作。当我使用:

它工作得很好,但是当我开始使用时:

这不起作用并引发错误

但是,如果我使用:

这也很好,但是这种方式违背了 POM 的观点,因为它会大大增加维护。

我想我一定是遗漏了一些东西来获取 page.find 从我的页面中找到 object_name,但我已经在它周围跳舞并搜索了高低,但似乎无法解决问题。帮助?:)

0 投票
1 回答
163 浏览

site-prism - SitePrism - 根据当前编辑 ID 动态定义元素

请注意我是 SitePrism 的新手。我正在整理一个 Capybara 功能测试用例来编辑数据。表单的 ID 是“edit_bears_1”,您可以想象 #1 根据当前对象的 ID 发生变化。

这是我为定义表单而创建的 SitePrism 文件:

如您所见,我目前将表单的 ID 硬编码为 #1,但这可能会改变。如何将#1 替换为某种被评估并链接到我正在编辑的熊的变量?感谢所有帮助!

0 投票
2 回答
1456 浏览

ruby - SitePrism 如何等待任何元素

我正在使用 Capybara 和 SitePrism 堆栈测试 UI 流程。不幸的是,我的 UI 流不是完全确定的,有时会在流中弹出一条警告消息。因此我需要在测试中有一个条件流。

要等待单个元素,SitePrism 提供

在我的情况下,可以出现两个元素,:button_submit或者:warning_popup. 我需要实现的是:

除了像这样运行循环之外,还有其他更优雅的方法吗?

我知道这个循环可能会以无限循环结束,我将在此处简化以进行说明。