问题标签 [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.
capybara - Site Prism:无法从部分内的元素中使用 xpath 定位器策略
我正在使用 SitePrism 2.6 并收到错误 Cannot use xpath locator strategy from an element。它只能从根元素中使用。
使用 xpath 定义了节元素。
部分元素是 X 类型,所以我有 X 类,我在其中使用 xpath 定义了子元素。
前任:section :abc_cell, X, xpath: '//xpath'
尝试访问page_object.abc_cell.xyz_label时出现错误:
无法从元素使用 xpath 定位器策略。它只能从根元素中使用。
- 使用 Appium 自动化框架并仅在 android 中出现问题,而在 iOS 中也可以使用相同的东西。
为什么会在android中发生这种情况?
ruby - 如何动态地将部分添加到 SitePrism 页面对象?
我正在使用 SitePrism 来测试我的 Web 应用程序。我有许多扩展的类,SitePrism::Page
并且许多常用的 HTML 片段由扩展的匹配类表示SitePrism::Section
问题是,我正在开发的应用程序基于 CMS,其中可以通过选择基于预定义内容的模板,然后将任意数量的可用组件拖放到页面上来组装页面。
最初的开发人员创建了一个Page Object来镜像每个可用的Template。只要测试的数量很少,并且我们必须在功能文件中测试的页面变体不多,这就很好。
随着多个测试用例的添加,页面对象开始以惊人的速度增长。
虽然我们可以通过为 CMS 中可用的每个组件定义Sections并在Page Objects中重用它们来轻松减少代码重复,但只有很多属性很少被使用。
SitePrism 中是否有办法将部分动态添加到页面对象的实例而不是整个类?
它还让我担心,这样做可能会导致 CSS 选择器泄漏到步骤定义中,这通常是一种不好的做法。
解决此问题的另一种方法是为特定的页面示例构建页面对象,而不是通用模板。模板页面对象可以只包含嵌入到模板中的任何内容,并由镜像特定页面的其他页面对象扩展,以处理差异。这听起来像一个更清洁的方法,所以我可能会这样写我的测试
无论如何,问题的技术部分仍然存在。不管它是好是坏,我怎样才能动态地扩展一个带有附加部分的页面对象?我只是好奇。
ruby - 如何解决这个 capybara/rspec 命名冲突?
我正在使用 Capybara(实际上是 SitePrism,它使用 Capybara)编写一个新的 rspec 测试用例,我遇到了一个明显已知的问题:https ://github.com/jnicklas/capybara/issues/1396 。本质上,由于其中一个或另一个的变化,RSpec 和 Capybara 现在都有名为的方法all
,当我尝试使用 SitePrism 查找一组元素或 SitePrism 部分时,Capybara 调用错误的方法并返回类型RSpec::Matchers::BuiltIn::All
而不是比预期的 Capybara 或 SitePrism 对象数组。
出于某种原因,我所有的旧测试,包括许多使用sections
和elements
构造非常相似的测试,都可以正常工作。我很难找到它们之间的差异,这会导致一个失败而另一个成功。我短暂地尝试回滚 Capybara 或 RSpec 只是试图暂时解决问题,但这似乎很愚蠢,试图查明问题何时引入,而每天都在运行的现有测试用例从未中断。
谁能告诉我为什么一个有效而另一个失败?以下是这两个测试用例的共同点:
- 两个规范文件都需要相同的
spec_helper.rb
文件。 - 该
spec_helper.rb
文件同时具有require rspec
和require capybara
。 - 每个规范文件
require_relative
都需要在每个测试中使用一个页面对象。 - 每个页面对象文件都有一个
sections :table_rows, <SECTION CLASS>, <ROW CSS>
声明。它们可能有不同的名称、类和 CSS 选择器,但它们是相同的基本结构。 - 在每个规范文件中,方法都会在引用的页面对象上调用
table_rows
。
table_rows
在这些较旧的测试用例之一中引用工作得很好,但我在新的测试用例中遇到了名称冲突错误。任何人都知道为什么会这样,所以我可以修复新的测试用例吗?
如果做不到这一点,有谁知道我如何将事物分开,以便页面对象需要capybara
但不需要rspec
,而规范文件需要rspec
但不能capybara
防止冲突?我对 Ruby 包管理了解不多,但似乎为了运行使用页面对象的 rspec 测试用例,所有这些都将混合在一起。我不确定避免同时要求它们的方法。
如果做不到这一点,有谁知道我理论上可以使用这两个软件包的哪个版本来避免这个问题?我用 rspec 3.2 和 capybara 2.4 做了实验,但似乎都不起作用,我放弃了,因为我记得无论我回到多远,我已经编写的测试用例都运行良好,而且试图以这种方式解决它似乎很愚蠢。
html - 如何使用 SitePrism gem 从下拉菜单中选择一个选项并测试该选项是否已被选中
我已经定义了一个 SitePrism 页面,它有一个带有选项的选择标签(在我的页面上创建一个下拉菜单)。
在我的黄瓜步骤中,我试图设置它,以便它从下拉菜单中选择一个选项,但似乎不可能这样做。
这是我的设置:
在我的步骤中,我有:
我的页面看起来像:
问题是在步骤中对元素调用“select”不起作用!它抱怨: ArgumentError Exception: wrong number of arguments (1 for 0)
不带参数调用 select 不会抱怨
,但这不是我想要的。我认为这是从列表中获取第一个元素(默认值)。
我希望能够在我的步骤中说:从页面上的下拉菜单中选择一个特定元素。
请问有什么帮助吗?
谢谢。
css - Rails:在测试环境中无法通过 SCSS @import 找到资产
我的团队正在使用 SitePrism 在 Rails 4 应用程序中进行功能测试,我们目前正在重组项目中的 CSS 资产。其中一个资产文件包括从子目录@imports 的一行:
应用程序/资产/样式表/lib/admin.scss.css:
和 app/assets/stylesheets/lib/base/base-admin.scss 依次包括:
这一切在浏览器的开发中都可以正常工作(我从请求中没有收到任何错误lib/admin.css
,并且我看到 CSS 规则已正确应用于页面)。
但是当我运行我们的功能测试时,我得到
但是,在测试环境中没有其他资产被破坏。为什么找不到这些?
ruby - 这两个宝石“site_prism”和“page_object”之间的区别
我遇到了两个项目,一个是 with WATIR
cucumber feature files
,step definitions
另一个是Rspec
,capybara`` without
步骤定义and
功能文件。
在WATIR
项目page_object
中使用并在capybara
site_prism gem
使用中。
- 两者有什么区别?
- 我们不能使用
page_object
这种capybara
方法吗?为什么?
ruby - Rspec,capybara 入门问题
我从简单的 Rspec 示例开始,Capybara。我遇到了几个问题。这个问题可能是因为我有使用cucumber
and的经验page_object gem
,但这里我使用的是capybara
and Site_prism gem
。
我试过: my_example_spec.rb require_relative 'Support/spec_helper' require_relative 'pages/login_page'
和login_page.rb
问题是:
当我运行
/li>my_example_spec.rb
它给出错误不应该吧
on(LoginPage).login (autouser, password)
。它应该导航到页面并运行login
方法。这就是它的工作原理,page_object gem
相当于site_prism gem
ruby - 需要等到对象大小达到Capybara中的预期
目前我可以使用下面的代码来验证对象大小:
但我想使用wait_for
/wait_until
命令,直到这些elements(collection of objects)
负载。所以我想像下面这样使用:
我怎样才能做到这一点?请帮忙。
ruby - SitePrism:有时能找到元素,有时不能,而 Capabara 可以
我正在使用 Capybara 和 Selenium 来测试我的网站。我还将 Site Prism 用于页面对象模型。我现在可以使每件事都正常工作,但是,我不明白为什么有时使用页面元素的操作不起作用,而使用“本机” Capybara 工作。
例如,我有一个 Page 对象:
及其实施:
当我使用:
那么,为什么会发生呢?有没有人遇到过这个问题?
selenium-webdriver - 等到元素处于活动状态/启用以在 Siteprism Capybara 上执行操作(如单击/选择)?
在 Siteprism 中,我需要在执行任何操作(如单击/选择)之前等待启用元素。
目前我正在使用 Siteprism:
@page.wait_for_page_element(10)
但看起来等待是不够的。由于元素可见但未启用,我的脚本仍然失败。需要一个解决方案。