Tag: poltergeist

使用poltergeist和capybara创建一个post请求

我正在从由默认Rack驱动程序支持的Capybara过渡到由Poltergeist支持的Capybara。 出于令人沮丧的原因,我需要在加载页面之前操作会话数据。 但我无法弄清楚如何直接使用Rack驱动程序操作会话,所以我 Capybara.current_session.driver.submit :post, “/current_search”, {:session => :data } 不幸的是,Poltergeist driver对象没有submit方法,就像Rack驱动程序一样。 有三种可能性: 如何使用poltergeist / phantomjs提交POST请求? (实现这似乎是最简单的) 如何使用poltergeist / phantomjs直接操作会话数据? 我可以重构代码,以便不再需要直接操作会话数据。 这将是耗时的并且是低优先级的。 PS:由于使用Ruby 1.8,我们仍然坚持使用Poltergeist v1.0.2

Capybara + Poltergeist与Database-cleaner没有找到FactoryGirl记录

我正在编写集成测试并使用FactoryGirl创建记录。 当测试具有js: true (使用Poltergeist)时,我的控制器正在抛出RecordNotFound ,即使它们是在非js测试中找到的(没有Poltergeist)。 我确实将use_transactional_fixtures设置为false ,将DatabaseCleaner.strategy设置为:truncation ,它似乎涵盖了此问题上每个现有的SO问题。 我尝试用Selenium(用Firefox)代替Poltergeist,但我得到了相同的结果。 ETA我用RSpec-Rails 3.3.3,Capybara 2.4.4,Poltergeist 1.6.0,PhantomJS 1.9.8,Database Cleaner 1.4.1开始了一个新的Rails 4.2.3项目,并在测试一个新的未经编辑的脚手架时获得相同的结果。 为什么Poltergeist找不到我的记录? 任何建议都会有所帮助,因为我已经在这里工作了几个小时。 前两个测试通过,而最后一个测试通过RecordNotFound在第二行失败: require ‘spec_helper’ before :each do @vehicle = FactoryGirl.create :vehicle end it “should work on vehicle path” do visit vehicle_path(@vehicle) expect(page).to have_content @vehicle.name end describe “with js”, js: true do it “should work on root path” […]

Rspec + Capybara可选择更改JS驱动程序

我使用poltergeist / phantomjs作为CI,但我希望能够选择将JS驱动程序更改为selenium以观察我的本地测试运行。 理想情况下,我想为这个默认的poltergeist设置一个命令行标志,但是能够运行rspec –driver = selenium(或类似的东西) 有任何想法吗?

Net :: ReadTimeout:Net :: ReadTimeout和Selenium :: WebDriver :: Error :: UnknownError:未知错误:Chrome无法启动Rails 5.1.beta系统测试

热衷于将Capybara烘焙到新版本的Rails(5.1)cf http://weblog.rubyonrails.org/2017/2/23/Rails-5-1-beta1/ 我遇到了一个问题。 这是我的步骤。 任何线索欢迎。 全新安装: Linux Ubuntu Desktop 16.10(Hyper-V上的VM),Chrome安装并运行正常; Ruby 2.4; Rails 5.1.beta。 1.-创建一个简单的应用程序: ~$ ruby -v ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux] ~$ rails -v Rails 5.1.0.beta1 ~$ mkdir railsapps ~$ cd railsapps ~/railsapps$ rails new smoketestapp ~/railsapps$ cd smoketestapp ~/railsapps/smoketestapp$ rails generate scaffold post title:string body:text ~/railsapps/smoketestapp$ rails db:migrate 2.-运行测试 ~/railsapps/smoketestapp$ cat […]

如何在capybara中使用execute_script时返回值?

我在测试中有一个非常简单的行,调用这样的执行脚本: puts page.execute_script(“return somefunction();”).to_i.inspect 在javascript我有这样的function: function somefunction(){ console.log(“test”); return 999; } 来自控制台日志的“测试”正在注销,因此它正在运行… 在运行测试时查看日志,execute_script返回0而不是999,所以在rspec中我无法获取函数的返回值,如何使page.execute_script从该函数返回该值?

为什么Capybara在一次活动后丢弃我的会话?

测试具有before_filter :authenticate_user!的rails应用程序before_filter :authenticate_user! 对于大多数控制器,我无法让Capybara保留会话。 我使用PhantomJS与恶作剧者配置了Capybara。 我使用以下帮助器: require ‘spec_helper’ include Warden::Test::Helpers module FeatureHelpers def login(user = FactoryGirl.create(:default_user)) login_as user, scope: :user user end end 我有以下spec文件: require ‘spec_helper’ include Warden::Test::Helpers feature ‘Leads Data Tasks View’ do before(:each) do @user = login end after{ Warden.test_reset! } context “clicking a task button” do scenario “login persists across multuple actions”, […]

在Capybara / Poltergeist中打开一个新标签

我正在尝试使用capybara / poltergeist点击它来打开一个链接,它在新标签中打开。 我似乎无法让它发挥作用。 @session.find().click 似乎只是停留在同一页面上 click_link “” @session.driver.window_handles 无论我在做什么,似乎只给了我一个窗口。 如何在新标签中打开该链接? 对于什么有效或不成功,似乎是相当混乱的( 对于Capybara,如何切换到新窗口以获得带有“_blank”目标的链接? )。 希望有人已经解决了……似乎无法理解它。 好。 通过更新到最新版本的poltergeist(1.6.0),我们取得了一些进展。 但是现在我有两个窗口,但不知道如何在它们之间切换。 @session.windows 给我 [Window @ handle =“0”,Window @ handle =“1”](略有修改,因为它有点好笑)。 但 @session.switch_to_window(1) 结果是 NoMethodError: undefined method `handle’ for “1”:String

Capybara,Poltergeist和Phantomjs并在身体上给出了空洞的回应

我是从phantomjs回来的空文件。 我正在尝试使用Capybara和Poltergeist为Capybara设置phantomjs驱动程序。 我创建了一个模块如下,并将其包含在使用连接需求的文件中。 require ‘capybara/poltergeist’ module Parser module JSParser include Capybara # Create a new PhantomJS session in Capybara def new_session # Register PhantomJS (aka poltergeist) as the driver to use Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, :debug => true) end # Use XPath as the default selector for the find method Capybara.default_selector = :xpath Capybara.javascript_driver […]

为什么我的Capybara / Poltergeist测试不能从jQuery自动完成字段中选择?

更新:经过我自己的大量艰苦工作后,我解决了这个问题。 我很高兴成为任何需要帮助的人的资源。 这是我工作设置的要点。 我已经尝试了所有可以找到Google和SO的解决方案。 以下是我尝试过的一些不同的事情: page.execute_script %Q{$(‘#{selector}’).val(‘#{value}’).trigger(‘keydown’)} 和 fill_in field, with: options[:with] page.execute_script %Q{ $(‘##{field}’).trigger(‘focus’) } page.execute_script %Q{ $(‘##{field}’).trigger(‘keydown’) } 这是失败的: page.should have_selector(‘ul.ui-autocomplete li.ui-menu-item a’) 但是当我在Firebug中查看并在浏览器中测试它时,它肯定存在。 以下是所有细节,包括上述内容的重述。 请记住,自动填充字段在浏览器中正常工作。 listing_integration_spec.rb require “spec_helper” describe “Listing Integration” do let!(:user) { login_user } it “lets a user add information listing”, js: true do listing = create(:listing, user: user) click_link(‘Additional […]

如何让poltergeist / PhantomJS延迟将页面返回到Capybara直到加载AJAX?

如何让PhantomJS将页面返回到Capybara几秒钟以允许AJAX完成加载? 我回来的HTML正文是: 这告诉我PhantomJS在页面加载其AJAX资产之前返回页面。 有什么方法可以减缓它的速度吗? 我已经尝试过使用rasterize.js解决方案,但看起来好像我添加到poltergeist的“phantomjs_options”哈希中的任何脚本都被忽略了。