10

ルビーセレンウェブドライバーを使用して、いくつかの基本的な自動テストを実行しようとしました。同じコードは自宅のコンピューターでは完全に機能しますが、プロキシ(認証を必要としない)の背後にある職場のコンピューターでは失敗します。

driver = Selenium :: WebDriver.for:firefox、:profile=>'デフォルト'

私が得るエラーは次のとおりです。

C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.24.0/lib/selenium/webdriver/remote/http/common.rb:66:in `create_response': unexpected response, code=
403, content-type="text/html" (Selenium::WebDriver::Error::WebDriverError)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
<H1>ERROR</H1>
<H2>The requested URL could not be retrieved</H2>
<HR noshade size="1px">
<P>
While trying to retrieve the URL:
<A HREF="http://127.0.0.1:7055/hub/session">http://127.0.0.1:7055/hub/session</A>
<P>
The following error was encountered:
<UL>
<LI>
<STRONG>
Access Denied.
</STRONG>
<P>
Access control configuration prevents your request from
being allowed at this time.  Please contact your service provider if
you feel this is incorrect.
</UL>

ブラウザは正しいプロファイルで開きますが、結果のドライバ変数はnilです。運が悪かったので、プロファイルにプロキシを手動で設定しようとしました。

何か案は ?

4

3 に答える 3

17

環境にHTTP_PROXY(またはhttp_proxy)が設定されている可能性があります。selenium-webdriverの次のリリース(2.25)も、NO_PROXY / no_proxyを尊重します(これは、NO_PROXY = 127.0.0.1に設定できます)。それまでは、ブラウザを起動する前に、Ruby環境からプロキシを削除できます。

ENV['HTTP_PROXY'] = ENV['http_proxy'] = nil
driver = Selenium::WebDriver.for :firefox

Firefoxが外​​部と通信するようにプロキシを構成する必要がある場合は、次のような方法を試すことができます。

proxy = Selenium::WebDriver::Proxy.new(:http => ENV['HTTP_PROXY'] || ENV['http_proxy'])
ENV['HTTP_PROXY'] = ENV['http_proxy'] = nil
driver = Selenium::WebDriver.for :firefox, :proxy => proxy
于 2012-06-25T13:30:27.393 に答える
4

プロキシの背後でのselenium-webdriverの使用には、ブラウザに関連する特定のものがあります。つまり、webdriverによって作成されたブラウザインスタンスにプロキシ設定を渡す方法を見つける必要があります。

以下はFirefoxで動作するコードです。

#Firefox keeps proxy settings in profile.
profile = Selenium::WebDriver::Firefox::Profile.new
profile.proxy = Selenium::WebDriver::Proxy.new( :http => "192.168.1.1:3128")
driver = Selenium::WebDriver.for :firefox, :profile => profile

driver.navigate.to "http://google.com"
puts driver.title
driver.quit
于 2012-09-14T17:42:17.000 に答える
-1
require 'rubygems'
require 'selenium-webdriver'
ENV['NO_PROXY']="127.0.0.1"
driver = Selenium::WebDriver.for :firefox
driver.get "http://google.com"
于 2015-01-20T14:15:21.437 に答える