Вопрос

I am new to ruby and I have this weird problem. I have installed ruby 1.9.3p125, Oracle11gXE(ver 11.2.0.2.0) on 64-bit Win7. I am able to run without any problems this script:

require 'watir-webdriver'
browser = Watir::Browser.new
browser.close

and also this script:

require 'oci8'
conn = OCI8.new('username/passwd')
conn.logoff

But as soon as I do this:

require 'watir-webdriver'
require 'oci8'
browser = Watir::Browser.new
browser.close

Things go wrong - I get this error:

C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': 193: %1 is not a valid Win32 application.   - C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/openssl.so (LoadError)
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/1.9.1/openssl.rb:17:in `<top (required)>'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/1.9.1/net/https.rb:22:in `<top (required)>'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver/remote/http/default.rb:1:in `<top (required)>'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver/remote.rb:9:in `<top (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver/firefox/bridge.rb:6:in `<module:Firefox>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver/firefox/bridge.rb:3:in `<module:WebDriver>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver/firefox/bridge.rb:2:in `<module:Selenium>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver/firefox/bridge.rb:1:in `<top (required)>'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver/firefox.rb:12:in `<top (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver/common/driver.rb:31:in `for'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.26.0/lib/selenium/webdriver.rb:65:in `for'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/browser.rb:35:in `initialize'
        from problem.rb:3:in `new'
        from problem.rb:3:in `<main>'
Press any key to continue . . .

On the other hand this is working fine:

require 'watir-webdriver'
require 'oci8'
conn = OCI8.new('username/passwd')
conn.logoff

Could you help me to fix this? It seems 'watir-webdriver' has some problems when 'oci8' is required. But this might be wrong assumption - it might be some configuration problem. Thanks for your help!

Это было полезно?

Решение

Try the following code.

require 'watir-webdriver'
require 'openssl' # <-- Add this line to load openssl.so before oci8.
require 'oci8'
browser = Watir::Browser.new
browser.close

The LoadError is raised when openssl.so is loaded. As far as I tested, loading openssl after oci8 produces same error and the inverse works fine.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top