Seleniumを使用して、接続が「信頼できない」証明書を使用するたびにFirefoxが警告を発しないようにする方法を見つけようとしています。最適に機能するソリューションの種類は、ブラウザの設定のいずれかを設定することだと思います。
どうもありがとう!どんな提案も大歓迎です!
Selenium for Javaでこの機能を有効にすることに関するこのコメント が見つかりました。 Javaの場合も同じ問題に関するこのStackOverflowの質問 希望するターゲット言語であるPythonの場合、FirefoxProfile
コードを参照してこれを思い付きました。
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
私がテストした限りでは、これは期待される動作を生み出しました。
これが誰かを助けることを願っています!
Mozilla Foundationのバグリンクからこれを見つけただけで、うまくいきました。
caps.setCapability("acceptInsecureCerts",true)
WebDriverで「信頼できない接続」を処理するためのカスタムプロファイルは不要
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
driver = new FirefoxDriver(capabilities);
上記の答えはどれも私にとってはうまくいきませんでした。私は使用しています: https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.Zip
Firefox 50.1.0
Python 3.5.2
セレン3.0.2
ウインドウズ10
予想以上に簡単なカスタムFFプロファイルを使用するだけで解決しました。この情報の使用 https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager 方法カスタムプロファイルを作成するには、次の手順を実行しました。1)新しいプロファイルを作成します。2)信頼できない証明書エラーを発生させるために手動でFFのサイトにアクセスしました。3)サイト例外を追加します(エラーが発生した場合、[詳細設定]をクリックしてから例外を追加します) 4)サイトをリロードして例外が機能することを確認します(エラーが発生しないはずです5)新しく作成したプロファイルをプロジェクトにコピーします(私にとってはSeleniumテストプロジェクトです)6)コードで新しいプロファイルパスを参照します
次の行のいずれも私にとって問題を解決できなかった:
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['handleAlerts'] = True
firefox_capabilities['acceptSslCerts'] = True
firefox_capabilities['acceptInsecureCerts'] = True
profile = webdriver.FirefoxProfile()
profile.set_preference('network.http.use-cache', False)
profile.accept_untrusted_certs = True
ただし、上記のカスタムプロファイルを使用した場合はそうでした。ここに私のコードがあります:
from Selenium import webdriver
from Selenium.webdriver.common.desired_capabilities import DesiredCapabilities
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
#In the next line I'm using a specific FireFox profile because
# I wanted to get around the sec_error_unknown_issuer problems with the new Firefox and Marionette driver
# I create a FireFox profile where I had already made an exception for the site I'm testing
# see https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager
ffProfilePath = 'D:\Work\PyTestFramework\FirefoxSeleniumProfile'
profile = webdriver.FirefoxProfile(profile_directory=ffProfilePath)
geckoPath = 'D:\Work\PyTestFramework\geckodriver.exe'
browser = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities, executable_path=geckoPath)
browser.get('http://stackoverflow.com')
C#ですべてのトリミングを最初から最後まで行います。 GeckoDriverには特定のバージョンが必要なため、FFv48をカスタムディレクトリにインストールしたことに注意してください。
var ffOptions = new FirefoxOptions();
ffOptions.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox48\firefox.exe";
ffOptions.LogLevel = FirefoxDriverLogLevel.Default;
ffOptions.Profile = new FirefoxProfile { AcceptUntrustedCertificates = true };
var service = FirefoxDriverService.CreateDefaultService(ffPath, "geckodriver.exe");
var Browser = new FirefoxDriver(service, ffOptions, TimeSpan.FromSeconds(120));
私は以下を追加し、それは私のために働いた
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setAcceptInsecureCerts(true);
WebDriver driver = new FirefoxDriver(desiredCapabilities);
私の場合、Firefoxドライバーの代わりにMarionetteドライバーを使用していました。バグが認められています( https://bugzilla.mozilla.org/show_bug.cgi?id=1103196 )。それまでは、代わりにFirefoxドライバーを使用しています。
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
dc.setCapability(FirefoxDriver.PROFILE, profile);
// this is the important line - i.e. don't use Marionette
dc.setCapability(FirefoxDriver.MARIONETTE, false);
Webdriver driver = new FirefoxDriver(dc);
私の場合、これでうまくいきました
FirefoxOptions options = new FirefoxOptions();
options.addCapabilities(new ImmutableCapabilities(ImmutableMap.of(
CapabilityType.ACCEPT_SSL_CERTS, true,
CapabilityType.ACCEPT_INSECURE_CERTS, true)));
WebDriver driver = new FirefoxDriver(options);
Javaでは、DesiredCapabilities.setAcceptInsecureCerts()
を使用する必要があります。カスタム機能とプロファイルを備えたFirefoxDriverを取得するには、次の手順を実行します。
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setAcceptInsecureCerts(true);
FirefoxProfile profile = new FirefoxProfile();
profile.set*...
FirefoxOptions options = new FirefoxOptions();
options.addCapabilities(capabilities);
options.setProfile(profile);
new FirefoxDriver(options);
私にとっては、PHP facebook/webdriver
プロファイルの作成を設定し、認証を許可しました。プロファイルの名前はSelenium
でした。
次に、Selenium 3を初期化します。
Java -jar -Dwebdriver.firefox.profile=Selenium selenium-server-standalone-3.0.1.jar
その後、FirefoxDriver.php
設定const PROFILE = 'Selenium';
これは私のために働いた。
にとって Firefox driver
およびJava
は次の行を追加します。
WebDriver driver;
ProfilesIni profile = new ProfilesIni();
FirefoxProfile testprofile = profile.getProfile("default");
testprofile.setAcceptUntrustedCertificates(true);
testprofile.setAssumeUntrustedCertificateIssuer(true);
driver = new FirefoxDriver(testprofile);
geckodriver
を使用する場合、プロファイルの初期化の前にこれを追加することを忘れないでください:
System.setProperty("webdriver.gecko.driver","<PATH_TO_GECKODRIVER>\\geckodriver.exe");
上記のソリューションは、Firefox 54.0b9(64ビット)で機能しました。これは私のコードです。
以下のように
capabilities = new DesiredCapabilities().firefox();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
//Accept Untrusted connection and to download files
FirefoxProfile profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
profile.setAssumeUntrustedCertificateIssuer(false);
profile.setPreference("dom.file.createInChild", true);
profile.setPreference("browser.download.folderList", 1);
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.download.manager.showWhenStarting"
,false);
profile.setPreference("pdfjs.disabled", true );
profile.setPreference("browser.helperApps.neverAsk.saveToDisk"
,"application/pdf;image/jpg;image/jpeg;text/html;text/plain;application/Zip;application/download");
System.setProperty("webdriver.gecko.driver", config.getGeckoDriver());
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
FirefoxOptions options = new FirefoxOptions();
options.addCapabilities(capabilities);
options.setProfile(profile);
driver=new FirefoxDriver(options);
この構成はPHPで機能します
public function setUp()
{
$this->setHost('localhost');
$this->setPort(4444);
$this->setBrowserUrl('https://example.loc');
$this->setBrowser('firefox');
$this->setDesiredCapabilities(["acceptInsecureCerts" => true]);
}
Firefoxの場合
Java -jar Selenium-server-standalone-3.8.1.jar -enablePassThrough false