web-dev-qa-db-ja.com

phantomjsdriver Selenium C#でCookieを有効にする方法は?

以下は私のコードです:

case BrowserType.PhantomJS:
               var service = PhantomJSDriverService.CreateDefaultService(Path.Combine(_rootPath, @"Packages\"));
               var cookieFilePath=Path.Combine(_rootPath, @"Packages\cookie.txt");
                 if (!File.Exists(cookieFilePath))
                       File.Create(cookieFilePath);

                 var phantomjsoptions = new PhantomJSOptions();
                 driver = new PhantomJSDriver(service,phantomjsoptions);
                 var cookieJar = driver.Manage().Cookies;
                 driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);
                 cookieJar.AddCookie(new Cookie("x", "12345"));
                 return driver;

基本的に問題は、エラーメッセージが表示されてテストアプリケーションにログインできないことです-

「あなたのブラウザはクッキーをブロックするように設定されています」

私はすべてを試しましたが、これに対する解決策を得ることができないようです。
私は何をすべきか?
ここで私を助けてください。
詳細が欠けている場合はお知らせください。

48
Prateek

RFC 2109では、IPアドレスを持つURLからのCookieの受け入れを明示的に禁止しています

ほとんどの場合、IPベースのアドレスを介してテストサーバーにアクセスしています。

ある種のDNS/Hostファイルをセットアップして、偽のドメイン名を使用できるようにすることができます。

1
Aron

ページが読み込まれるまで待機してから、Cookieを設定する必要があります。

driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);
//Wait page loaded
cookieJar.AddCookie(new Cookie("x", "12345"));

次の解決策を試してください: https://stackoverflow.com/a/30636987

driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);//some fake url
driver.Manage().Window.Maximize();
driver.SwitchTo().ActiveElement();
cookieJar.AddCookie(new Cookie("x", "12345"));
driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);//cookie exsist
0
DmitryZyr