Cucumber Selenium-Webdriver Content-Disposition - ruby

Is there a way I could confirm the download process of a file when using selenium-webdriver with cucumber/ruby?
When running headless, I use a simple rspec-expectation expect(response_headers['Content-Disposition']).to include("attachment;filename#{pdf_filename}")
When I run in Selenium (Chrome), this no longer works. I get the error:
Capybara::NotSupportedByDriverError: Capybara::Driver::Base#response_headers
Is there a way I can achieve this when running through Selenium?

You can check if the file you expected is present in the download directory:
File.exists? "/Users/mesutgunes/Downloads/#{pdf_filename}"

Related

how to use geckodriver with watir webdriver

I ran a bundle update yesterday night and selenium-webdriver got updated to the latest version.
My watir-webdriver tests pointed to firefox are now broken.
The error message said to add geckodriver to the path. On my mac, I copied geckodriver to the /usr/bin and ran the tests again.
This is the error I am getting now
unable to connect to Mozilla geckodriver 127.0.0.1:4444 (Selenium::WebDriver::Error::WebDriverError)
The watir-webdriver documentation does not seem to be updated on how to do this?
Did anyone manage to fix this
There is no extra documentation because there is nothing extra to do with Watir. It's finding the geckodriver file , but can't run it. Check to make sure it is executable on your system.
If your test not only just stick to firefox, you can use chromedriver instead of geckodriver, which is much easy, as far as my experience goes.
1, Add gem watir to your gemfile.
2, Download file on this page https://sites.google.com/a/chromium.org/chromedriver/downloads, and copy chromedriver to /usr/bin path.
3, And then just run it:
browser = Watir::Browser.start(url)
html = Nokogiri::HTML.parse(browser.html)
browser.close
4, Also, you can use headless to start a virtual X screen to hide browser windows like this:
headless = Headless.new
headless.start
browser = Watir::Browser.start(url)
html = Nokogiri::HTML.parse(browser.html)
browser.close
headless.destroy

Cucumber/Phantomjs not loading https - so how do I change the phantom settings?

I'm using phantomjs as my browser to run my ruby cucumber scripts.
When I try and run some https-based scripts, Chrome, Firefox, etc all pass but phantomjs fails.
I've seen where I can change the phantomjs settings to --ssl-protocol=any for example, or --ignore-ssl-errors=yes. But where do I set these when using Cucumber?
I (naively) thought I could just add it to the end of the cucumber command (cucumber ./features/ABC-1234.feature -p phantomjs --ignore-ssl-errors=yes etc, etc), but this obviously didn't work.
I've tried adding it to the cucumber hook file, but again to no avail.

Headless in Windows 7 for Ruby in Watir?

I am new here. Is there any way to use headless in windows? I tried but it says :
:/Ruby193/lib/ruby/gems/1.9.1/gems/headless-1.0.1/lib/headless/cli_util.rb:4:in ``': No such file or directory - which Xvfb (Errno::ENOENT)
Please help...
Headless Tests in "WINDOWS7" using WATIR? You can use phantomjs which is super easy to configure.
Follow these easy steps:
Download phantomjs from here
Extract to desired folder, once extracted you just need phantomjs.exe
Now where ever you instantiating the browser, use it like this:
phantom_dir = "location of phantomjs.exe"
ENV['PATH'] = "#{ENV['PATH']}#{File::PATH_SEPARATOR}#{ghost_dir}"
browser = Watir::Browser.new :"phantomjs"
To run headless on other OS follow easy steps here
You have to run it on a linux box. Xvfb doesn't exist in Windows or Mac

How do I resolve a Cucumber 'can't load such file' warning?

I'm trying to work through 'The Cucumber Book', but Cucumber is not behaving as expected.
I'm on Windows 7 (32-bit), and I'm reasonably confident I have Ruby and the necessary gems installed properly.
However, when I run cucumber I get the following message:
WARNING: cannot load such file -- 2.0/gherkin_lexer_en
Couldn't load 2.0/gherkin_lexer_en
The $LOAD_PATH was:
C:/Ruby200/lib/ruby/gems/2.0.0/gems/cucumber-1.2.1/bin/../lib
C:/Ruby200/lib/ruby/gems/2.0.0/gems/gherkin-2.11.6-x86-mingw32/lib
C:/Ruby200/lib/ruby/gems/2.0.0/gems/builder-3.2.0/lib
C:/Ruby200/lib/ruby/gems/2.0.0/gems/diff-lcs-1.2.1/lib
C:/Ruby200/lib/ruby/gems/2.0.0/gems/cucumber-1.2.1/lib
This continues for a bit, listing more paths that were checked, and then a 'Reverting to Ruby lexer', and a message 'No lexer was found for en (cannot load such file --gherkin/lexer/en)...'
Based on the path it is checking it seems like it wants a '2.0' folder in the 'gherkin-2.11.6-x86-mingw32/lib' folder, which obviously doesn't exist. There are, however, '1.8' and '1.9' folders which appear to have the 'gherkin_lexer_en' file (actually 'gherkin_lexer_en.so').
As a wild guess, I duplicated the 1.9 folder and named it 2.0. I didn't really expect that would work, but figured it was worth a shot.
How do I get cucumber to look in one of the folders I have, or alternatively get a 2.0 folder in place that it will accept?
$ gem install gherkin --platform ruby
go to below folder inside your ruby installation directory
{rubyDir}\lib\ruby\gems\2.0.0\gems\gherkin-2.12.2\lib\gherkin
may be different path for you guys
Modify *lib/gherkin/c_lexer.rb:7
change the value of prefix as below:
prefix = ''
Found answer at below link
https://github.com/cucumber/gherkin/issues/273
with reply
mscharley commented on Jan 18, 2014
worked for me like charm..
On Windows, you will have to use Ruby 1.9 for the time being. There isn't a Ruby 2.0 build of gherkin published yet.
If you are using gherkin ver 2.12.1, you should be able to use cucumber with ruby 2.0 on Windows now.
 
First, install gherkin-2.12.1 with --ignore-dependencies option.
The reson --ignore-dependencies option is required is that without specifying it, it will install json 1.4.X which is very old version and fail to install on ruby 2.0.
 
At this point, you should be able to ruby cucumber on ruby 2.0, but you'll see the error message like above as warning message. This means you can still use cucumber although you are seeing the message.
 
If you want to remove the error, follow the step below.
 
create [2.0] folder on [ruby installed dir]\lib\ruby\gems\2.0.0\gems\gherkin-2.12.1\lib (This folder includes gherkin_lexer_XX.so).
copy all the contents in [ruby installed dir]\lib\ruby\gems\2.0.0\gems\gherkin-2.12.1\lib to the created [2.0] folder (you don't need to copy [2.0] folder you created).

new window creation in watir

I am new to watir. I am trying to create new ie window with
browser = Watir::Browser.new
but it gives error message like
`user_is_bewildered': Error in the default values: :browser's value must be one of 'ie', 'firefox', or 'safari', and '' doesn't look right. (StandardError)
I donno how to set default browser. Can some one help me? There is a another thread here. But I am not able to understand what i need to do in ffi.
Thanks
If this is the original Watir gem, then the following is how I used to launch it:
require 'rubygems'
require 'watir'
Watir::Browser.default = "firefox"
browser = Watir::Browser.new
# Whatever you want to do in watir
IamChuckB's answer may be a more efficient way of doing this, but having not used it, I'm not sure.
You need to tell it which browser to open. Try this:
browser = Watir::Browser.new :ff
I haven't played around with watir since my last job so I had to look this up. As I last recall, WATIR was not entirely integrated with FireWATIR (the Firefox based variant). It's good to see that the two have apparently been reconciled in the meantime.
Taken from Watir in Five Minutes on Zeljko Filipin's github, BTW.
To install devkit,
create a folder in the ruby directory called devkit
get the devkit from here
unpack it into the devkit directory created in step 1
add c:\ruby193\devkit\bin;c:\ruby193\devkit\wming\bin to your path, of course adjusting for your ruby install directory
now open a command prompt to install the gem again
c:\> gem install watir
The issue is resolved. Thanx for the the inputs. The issue was with wrong nokorigi gem installation, initially i installed x86-mswin32-60, i uninstalled it and tried with x86-mingw32, it solved.

Resources