2
votes

I downloaded iwebDriver project and installed it in ipad. The server starts on "http://10.10.10.55:3001/wd/hub". And I want to hit "www.google.com" on it, but I get errors. I am pasting code below and the stacktrace as well.

Note : It works perfectly on iOS simulator but fails on ipad. My iPad version 4.3.3, XCode version is 4.2 and iOS SDK is 5.1

require 'selenium-webdriver'

browser = Selenium::WebDriver.for :remote, :url => "http://10.10.10.55:3001/wd/hub", :desired_capabilities => "ipad"
browser.get "http://www.google.com"

and i am getting error:-

URI::InvalidURIError: the scheme http does not accept registry part: (null):(null) (or bad hostname?) from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/uri/generic.rb:199:in initialize' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/uri/http.rb:78:ininitialize' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/uri/common.rb:177:in new' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/uri/common.rb:177:inparse' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/uri/common.rb:628:in parse' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/http/default.rb:57:inrequest' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/http/common.rb:40:in call' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/bridge.rb:598:inraw_execute' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/bridge.rb:92:in create_session' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/bridge.rb:68:ininitialize' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common/driver.rb:33:in new' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common/driver.rb:33:infor' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver.rb:65:in for' from (irb):5 from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in'

And when I used "https" , I see the following-

browser = Selenium::WebDriver.for :remote, :url => "https://10.10.10.55:3001/wd/hub", :desired_capabilities => "ipad"

OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:678:in connect' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:678:inblock in connect' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/timeout.rb:44:in timeout' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/timeout.rb:89:intimeout' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:678:in connect' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:637:indo_start' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:626:in start' from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:1168:inrequest' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/http/default.rb:76:in response_for' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/http/default.rb:38:inrequest' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/http/common.rb:40:in call' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/bridge.rb:598:inraw_execute' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/bridge.rb:92:in create_session' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/remote/bridge.rb:68:ininitialize' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common/driver.rb:33:in new' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common/driver.rb:33:infor' from /Users/rohit/.rvm/gems/ruby-1.9.2-p290@playerTests/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver.rb:65:in for' from (irb):6 from /Users/rohit/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in'1.9.2p290 :007 >

Please suggest, what i am doing wrong?

1
The ip that you have in code 10.10.10.55:3001 is your ipad ip address? Are you able to see IWebDriverReady message when you access 10.10.10.55:3001/wd/hub outside ipad?A.J
Hey, Thanks A.J for looking at it. Yes 10.10.10.55:300/wd/hub is accessible for me outside ipad. 10.10.10.55:3001 is my ipad IP address. I can see there "iWebDriver Ready" message. Works perfectly on iphone actual device also , but not ipad.rohitkadam19
Hmm..When you installed the iWebDriver in ipad, did you make sure to change the configuration in XCode to "ipad" from "iphone"?A.J
Yes, I made changes in configuration of Xcode to "ipad" from "iphone". Is the selenium webdriver works for ipad actual device?rohitkadam19
Yes. It works fine for me.I connect it to a grid and run the tests in grid mode. Only problem is ipad drops wifi connection after a while. Thats a known issue with ipadA.J

1 Answers

2
votes

Why selenium-webdriver was not working on ipad :-

  1. My ipad2 version is 4.3.3 and I installed iWebDriver project on same ipad2.
  2. Tried to run simple ruby code, written in question.
  3. Code was giving error, stack trace also pasted in question.

How selenium-webdriver started working on ipad :-

  1. I installed iWebdriver project on 'New ipad' ios version 5.1. also it works on iphone 4S whose version is 5.0
  2. And then ran simple ruby code

    ruby 'selenium-webdriver' driver = Selenium::WebDriver.for :remote, :url => "http://10.10.10.88:3001/wd/hub", :desired_capabilities => :ipad

  3. desired_capabilities does not matter, you can give anything :iphone or :ipad

  4. Above ruby code returned me the object and I can do:-

    driver.get "http://www.google.com"

  5. And it worked.
  6. I observed, there is iOS version dependency for selenium-webdriver to work on.

So, the questions are why selenium-webdriver does not work on iOS version below than 5.0 like 4.3.3, 4.3.1 etc.

Thanks everyone who helped me.