Tag: 水豚

Cucumber / Capybara vs Selenium?

前几天,我向我公司的一位测试人员展示了我用黄瓜写的一些测试(2个function,5个场景)。 然后他问了我无法回答的问题: 这比selenium或任何其他function测试录音工具更好吗? 我知道黄瓜是一种不同的技术,它处于不同的测试水平,但我不明白为什么我应该费心去编写和维护Cucumber / Capybara测试。 有人可以给我一个合理的解释,使用Cucumber / Capybara而不仅仅是Selenium吗?

有没有人想出办法在多个浏览器/网络驱动程序上运行相同的黄瓜方案?

我正在使用黄瓜+水豚进行一些网络自动化测试。 我希望能够连接我自己的标签(类似于场景之前的@all_browsers)并让它针对我设置的网络驱动程序列表运行(快速,firefox上的selenium,即Chrome和Chrome)。 我不想在前面用4个不同的标签写4个不同时间的场景。 我试着通过我注册的新驱动程序来尝试这样做: Capybara.register_driver :all_browsers do |app| # What would even work in here? I don’t think anything will. end 然后跟进: Before(‘@all_browsers’) do # Same problem here. end 但是我不太确定要放入哪种方法可能会有效。 我尝试过使用黄瓜钩,特别是: Around(‘@all_browsers’) do |scenario, block| Capybara.current_driver = :selenium_firefox block.call Capybara.current_driver = :selenium_chrome block.call # etc end 但这并不像我希望的那样。 它使用相同的驱动程序并使用它运行场景两次。 沿着钩线,这是黄瓜文件中的这个: You may also provide an AfterConfiguration […]

Selenium找不到类型编号的字段

我在让Cucumber找到HTML5 type=”number”字段时遇到问题。 我不是他们在浏览器中看起来的忠实粉丝,但我有几个字段需要移动设备上的数字键盘,这似乎是获得它的最简单方法。 我正在使用SimpleForm来构建表单,当我设置:as => :text一切正常,但如果我设置:as => :number ,则字段不会被填写。 我没有得到任何错误,该领域只是没有得到填补。 具体来说,当我有这样一个步骤时: And I fill in “application_form_age” with “52” 然后这个标签将不会填写: ​ 但是这个有效: ​ 此外,它只发生在@javascript场景中。 在没有必要使用@javascript并且场景没有启动浏览器的情况下,这也可以正常工作。 事物的版本: capybara (2.2.1) cucumber (1.3.14) selenium-webdriver (2.41.0) simple_form (2.1.1) webrat (0.7.3) Firefox 29.0 我很难过。 我尝试了一堆我的应用程序JS和CSS,看看我正在做的事情是否打破它,但没有运气。 我只是通过强制那些字段在我的测试环境中没有HTML5类型号来修补它,但我不想那样生活。 还有其他人看到这个吗? 我无法找到任何引用它,这使它看起来像我正在做的事情。 但我无法弄明白。

黄瓜,水豚和selenium – 提交没有按钮的表格

我有一个使用Cucumber,capybara和selenium驱动器的测试。 此测试应该转到表单并提交。 正常的文字是 Scenario: Fill form Given I am on the Form page When I fill in “field1” with “value1” And I fill in “field2” with “value2” And I press “OK” Then I should see “Form submited” 问题是我没有表单中的OK按钮,我需要一种方法来执行“form.submit”,而不需要单击任何按钮或链接 – 就像在表单字段中按Enter时一样使用浏览器。 我不知道如何告诉capybara提交表格。 我该怎么做?

如何用Capybara在两帧之间切换

我尝试在2帧内做一些事情,但每当我尝试在帧之间切换时错误就会boost。 例如: # encoding: utf-8 require “capybara/dsl” Capybara.run_server = false Capybara.current_driver = :selenium Capybara.app_host = ‘https://hb.posted.co.rs/posted’ class Account include Capybara::DSL def check_balance visit(‘/’) page.driver.browser.switch_to.frame ‘main’ fill_in ‘korisnik’, :with => ‘foo’ fill_in ‘lozinka’, :with => ‘bar’ click_button ‘Potvrda unosa’ page.driver.browser.switch_to.frame ‘header’ click_on ‘Stanje’ end end account = Account.new account.check_balance 错误是: [远程服务器]文件:///tmp/webdriver-profile20120810-9163-xy6dtm/extensions/fxdriver@googlecode.com/components/driver_component.js:6638:在“未知”中:无法找到frame:main(Selenium :: webdriver的::错误:: NoSuchFrameError) 问题是什么? 也许我在这里做错了什么? […]

Capybara在JS模式中填补麻烦

让我首先确认这不是重复(因为那里发布的答案没有解决我的问题)。 这篇文章基本上是我的确切问题:Capybara无法找到Stripe模式中的表单字段来填充它们。 这是我的水豚规格: describe ‘checkout’, type: :feature, js: true do it ‘checks out correctly’ do visit ‘/’ page.should have_content ‘Amount: $20.00’ page.find(‘#button-two’).click_button ‘Pay with Card’ Capybara.within_frame ‘stripe_checkout_app’ do fill_in ‘Email’, with: ‘example@example.com’ fill_in ‘Name’, with: ‘Nick Cox’ fill_in ‘Street’, with: ‘123 Anywhere St.’ fill_in ‘ZIP’, with: ‘98117’ fill_in ‘City’, with: ‘Seattle’ click_button ‘Payment Info’ fill_in […]

如何在Capybara测试中使用Rspec确定Warden / Devise

我想在我的Rails应用程序中使用Capybara测试套件中的rspec模拟存根登录用户(使用Devise / Warden)。 这将节省大量时间,并且意味着我的测试套件可以/将定期运行。 以前我可以使用authlogic来执行此操作,方法是使用以下代码来截断我的会话模型: def login(user) user_session = mock_model(UserSession, {:user => user}) UserSession.stub(:find).and_return(user_session) end 现在我正在使用Devise,我再也无法访问UserSession对象了。 因为我使用capybara来测试我的代码,所以我没有直接访问请求对象来使用sign_in内置的sign_in测试助手。 我的问题是:如何使用水豚,设计和规范模拟模拟登录用户,而不需要每个具有登录用户的方案首先进入注册路径,填写表单,提交,等待响应,以及然后转到所需的页面?

更改默认的Capybara浏览器窗口大小

所以,关于使用Capybara和RSpec的集成测试,我知道我可以这样做: page.driver.browser.manage.window.resize_to(x,y) per 如何在 Rspec (Selenium)中为特定的RSpec测试设置浏览器窗口大小 ,但有没有办法全局执行此操作,以便受媒体查询影响的每个测试都不必定义此项?

Net :: ReadTimeout(Net :: ReadTimeout)Selenium Ruby

我在Selenium中看到了一些与超时错误相关的post。 这变得越来越难以忍受,因为它使我的测试包无法使用。 我正在测试目前正在开发的网页。 我有一个大约300个测试场景的回归套件,它一直有效,直到firefox和selenium webdriver的最新更新。 现在几乎所有其他测试我得到: Net::ReadTimeout (Net::ReadTimeout)错误。 这不可能是巧合。 有谁知道什么可能导致突然的超时问题? 我试过回到以前版本的webdriver和firefox。

如何使用Capybara获取HTML表格行

我正在尝试使用部分href xpath扫描HTML表中的行,并使用该行的其他列值执行进一步的测试。 link 29 33 485 45.2934,00 EUR link 22 93 485 38.336.934,123 EUR link 394 27 3844 3.485,2839 EUR 在cucumber-jvm步骤定义中,我很容易像下面那样执行它(我使用Ruby更舒服) @Given(“^if there are…$”) public void if_there_are…() throws Throwable { … … baseTable = driver.findElement(By.id(“blah”)); tblRows = baseTable.findElements(By.tagName(“tr”)); for(WebElement row : tblRows) { if (row.findElements(By.xpath(“.//a[contains(@href,’key=HONDA’)]”)).size() > 0) { List col = row.findElements(By.tagName(“td”)); tblData dummyThing = […]