capybara 相关问题

Capybara是Rack应用程序的Web应用程序测试框架,例如Rails,Sinatra和Merb。

在水豚中找到隐藏元素

学习‘水豚’,遇到了通过水豚寻找隐藏元素的问题。 在 HTML 中,我们有一个默认为“display: none”的文件字段。 HTML 元素是: 学习“水豚”并遇到通过水豚找到隐藏元素的问题。 在 HTML 中,我们有一个默认为“display: none”的文件字段。 HTML 元素是: <input class="some_class" id="some_id" name="some_name" type="file"> 现在,当我使用黄瓜在水豚中编写测试用例时,我在水豚脚本中找不到这个元素。我的水豚脚本正在寻找这样的元素: find(:xpath, "//input[@name='some_name']") 阅读隐藏元素并了解该设置 Capybara.ignore_hidden_elements = false 应该可以解决我的问题。但我在其他地方读到上述设置是默认设置。因此,尝试了显式传递它的其他选项。喜欢: find(:xpath, "//input[@name='some_name']", :visible => false) 那也不起作用。还有什么我应该尝试的吗?如果有人感兴趣,我们很乐意分享更多细节。 可见选项有一些潜在价值 true 或 :visible => 仅查找可见元素 false 或 :all => 查找可见和不可见元素 :hidden => 只查找不可见元素 因此,如果您尝试 find(:xpath, "//input[@name='some_name']", :visible => false) 没有返回元素,则页面中没有与该 XPath 匹配的元素,您需要检查页面的内容是否是您认为的内容(page.html、page.html)。保存_屏幕截图等) 除此之外,您的示例还有一些问题。首先,您陷入了 XPath // 陷阱。如果(这应该是一个很大的如果)您将大量使用 XPath 查询来查找元素,请习惯于以 .// 开始查询,而不仅仅是 // - 如果不这样做,您就失败了Capybara 在页面上的所有范围(within、链式 find 等)。使用 CSS 选择器不会出现这个问题,因此对于大多数不使用 Capybara 内置选择器类型之一的查询来说更有意义。 find("input[name='some_name']", visible: false) 知道我们正在寻找文件输入,我们可以通过使用 Capybara 的内置 file_field 选择器并执行以下操作来做得更好 find(:file_field, 'some_name', visible: false) 它更容易阅读并准确解释您正在寻找的内容。接下来,由于您找到了一个文件字段,我假设您需要实际向其中添加一个文件。这可能会产生问题,因为通常无法与不可见元素进行交互。然而,由于文件字段经常被隐藏,为了允许样式设置,有一个选项可以帮助解决这个问题。 attach_file('some_name', file_path, make_visible: true) make_visible: true选项将临时更改元素CSS以使其可见(如果默认CSS在您的页面上不起作用,您可以将其设置为要设置的CSS值的散列,而不是true),附加文件到它,然后恢复 CSS 更改。 最后一点,如果您正在测试应用程序(如果只是进行自动化也可以),设置 Capybara.ignore_hidden_elements = false 是一个糟糕的主意,因为它会导致测试实际上并没有测试用户可以看到/执行的操作。 find_field('some[name]', type: :hidden) 其他一些选项可能在历史上有效,但这对我来说适用于水豚(3.39.2)。

回答 2 投票 0

禁用 Chrome“保存卡?”弹出水豚

当使用 Capybara 和 Selenium 时,您使用什么参数或首选项配置 Chrome 来禁用此“保存卡”?对话? browser_options = ::Selenium::WebDriver::Options.chrome

回答 1 投票 0

如何使用 Capybara 获取元素中的 HTML?

我正在编写一个黄瓜测试,我想在元素中获取 HTML。 例如: 在“表”内做 # 这有效 find('//tr[2]//td[7]').text.should == "这些是注释" #我想要

回答 11 投票 0

在功能测试中测试下载文件

目前,我的代码使用send_data在控制器中下载数据。我需要编写一个功能测试来检查文件的下载。我正在使用 Capybara、selenium(chrome 浏览器)。有没有...

回答 1 投票 0

使用 rspec 和 capybara 单击链接不会加载页面

在Rails 3.2中,我使用rspec(2.11.0)和capybara 1.1.2(并且尚未安装webrat),当我单击网页上的链接时,它会做一些奇怪的事情。 我正在尝试点击我主页上的链接...

回答 2 投票 0

我如何在水豚中点击这个按钮

请帮我解决水豚的问题 我在水豚中有一个这样的按钮: 我尝试过 点击但是...

回答 4 投票 0

Capybara 与 jquery.selectize 的集成测试

如何使用 jquery.selectize 编写带有表单的水豚集成测试? 我想测试用户输入几个值。

回答 7 投票 0

如何在cuprite中切换选项卡并断言内容?

我用的是赤铜矿0.13 水豚3.53.3 规格3.11 我有一个简单的规范,单击带有 target="_blank" 属性的链接。 new_window = page.window_opened_by 做 点击...

回答 1 投票 0

Find 方法返回的 Capybara 元素采用了错误的坐标

我已使用 Ruby On Rails 和 Minitest 运行系统测试,但显示错误。 错误: RequestsTest#test_Admin_User_should_create_request: 硒::WebDriver::错误::ElementClickIntercepte...

回答 1 投票 0

如何在水豚中点击表单提交按钮

使用 Rails、rspec 和 capybara,我正在尝试测试典型的 ERB 生成形式: 使用 Rails、rspec 和 capybara,我正在尝试测试典型的 ERB 生成形式: <form action="/pages/1" id="edit_page_1" method="post"> <input id="page_title" name="page[title]" type="text"> <input name="commit" type="submit" value="Update Page"> </form> 我运行两种功能规范,一种是无论哪种语言都相同的,另一种是 I18N 特定的(用于国际化测试)。 问题是没有明确的方法来点击水豚的提交按钮,除非我错过了明显的。我希望简单地click('commit')就能达到目的。 使用 click_button('Update Page') 可以工作,但显然是特定于语言的,并且不能与新建模板和编辑模板一起使用,即使它们呈现相同的表单模板。 向提交按钮添加 id 是可行的,但我非常不喜欢专门更改代码,因为测试需要它。 使用 css 或 xml 匹配器看起来都很丑(用户永远不会知道/关心以这种方式访问元素),而且太过分了。 最后,一个宏就是我需要的答案,因为显然水豚中没有任何原生的东西。 # spec/support/form_helpers.rb module FormHelpers def submit_form find('input[name="commit"]').click end end 这包含在spec_helper.rb中 RSpec.configure do |config| config.include FormHelpers, :type => :feature ...etc... 我使用了 :type => :feature,因此它仅包含在集成测试中。 在集成测试中你可以这样使用它: scenario 'pages can be created' do visit new_page_path fill_in 'page_title', with: 'A Tale of Two Cities' submit_form # Clicks the commit button regardless of id or text expect(page).to have_content 'The page was created' ...etc.. end 当然submit_form也可以在within块内使用并与:js => true一起使用。 我通常这样做: within 'form#edit_page_1' do find('input[name="page[title]"]').set "Some Value" find('input[name="commit"]').click end 它与 html 相关,但与它的语义属性相关,所以我觉得它很好。 事实上我从来不使用神奇的取景器。 顺便说一句,我不明白你的评论:(a user would never know/care about accessing an element that way)。 集成规范适合您,它肯定会模仿用户,但这只是提供正确说明的问题。 尝试使用: find('input[name="commit"]').click 有帮助

回答 3 投票 0

在 Heroku 上找不到用于 Ruby on Rails 的 Selenium 的 Chrome 二进制文件

两周前,我成功在 Heroku 上搭建了一个工作环境,结合了 Capybara、Selenium、Chromedriver 和 Chrome 进行网页抓取。然而,一周前我一定改变了一些东西,这......

回答 2 投票 0

Selenium::WebDriver::错误::UnexpectedAlertOpenError:

我收到错误,因为警报已打开。我认为我以正确的方式处理它;-) 根据我的研究,“accept_confirm”块是处理此问题的方法。 功能“用户可以删除

回答 1 投票 0

使用水豚运行系统测试时,如何测试持久层?

我正在开发一个 Rails 应用程序,用户可以在其中注册。 用户注册后,我想检查持久的用户记录是否符合某些期望,例如:名字已保存....

回答 1 投票 0

使用 ruby capybara 启动适用于 Android 的 appium 驱动程序

如何使用 ruby capybara 框架启动 android 的 appium 驱动程序 def register_cloud_mobile_driver Capybara.register_driver :cloud_mobile 做 |app| opts = Selenium::WebDriver::Remote::

回答 1 投票 0

如何在水豚场景中添加等待条件?

我正在使用 capybara 来测试我的 Rails 应用程序以进行集成测试。 在我的应用程序中有很多 Lightbox 和 Ajax 以及 js 调用。 @javascript 场景:我同意功能性 ...

回答 4 投票 0

RSpec 系统测试无法访问工厂新创建的记录

我正在尝试登录用户并访问该用户拥有的记录的页面。 RSpec.describe '用户问题',输入: :system do 上下文“紧急事项流”做什么 让!(:物质){创建(:物质,:

回答 1 投票 0

rspec 的未定义方法sign_in

我正在编写一个简单的控制器测试,以确保我们在 GET 请求时获得 200 状态。我在网上遇到的每个答案都说要确保我们在

回答 1 投票 0

等待JS加载

我的规范脚本中的 js 加载有问题。 我使用了 js: true 和 wait_for_ajax,但效果不佳,因为我使用 ActionMailer::Base.deliveries.count 来访问电子邮件。 有没有...

回答 1 投票 0

如何用Capybara的has_select反驳选项的存在?

假设您有一个仅包含以下选项的选择列表: 第二个假选项 并且您想断言选择列表不包含带有...的选项

回答 2 投票 0

期待与水豚的图像

我需要验证图像是否存在,但我没有得到它,有人可以帮助我吗? 我想: Expect(page[:src]).to eq("https://www.viajanet.com.br/static/assets/platform/img/catalog/RIO/Rio...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.