以下是我的代码:
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;
基本上问题是我无法登录我的测试应用程序,因为我收到错误说 -
"您的浏览器设置为阻止Cookie"
我已经尝试了一切,但我似乎无法为此找到解决方案 我该怎么办? 请帮帮我 如果遗漏了一些细节,请告诉我。
答案 0 :(得分:1)
RFC 2109明确禁止从具有IP地址的URL接受cookie
几乎可以肯定,您将通过基于IP的地址访问测试服务器。
您可以尝试设置某种DNS /主机文件,以允许您使用假域名。
答案 1 :(得分:0)
您必须在加载页面时等待,然后设置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
答案 2 :(得分:-2)
您可以尝试以下步骤
1)在firefox或chrome浏览器中创建用户个人资料。 2)确认"接受cookie"通过转到浏览器设置选项启用该选项。 3)通过硒加载您的配置文件。
这样做可确保启用cookie选项为ON,并且您的会话也将保存在浏览器缓存中。
for chrome
System.setProperty("webdriver.chrome.driver", "browser/chromedriverlinux");
ChromeOptions options = new ChromeOptions();
options.addArguments("--user-data-dir=/home/rohit/.config/google-chrome/Profile 1");
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
适用于Firefox
ProfilesIni profile = new ProfilesIni();
FirefoxProfile ffprofile = profile.getProfile("ROHIT");
WebDriver driver = new FirefoxDriver(ffprofile);
要在firefox中创建配置文件,请在终端中尝试以下命令 firefox -p