Java 在并行执行中,safari浏览器会自动导航到url而不显示登录页面

Java 在并行执行中,safari浏览器会自动导航到url而不显示登录页面,java,selenium,selenium-webdriver,safaridriver,Java,Selenium,Selenium Webdriver,Safaridriver,我使用的是selenium web驱动程序2.48和safari驱动程序2.48以及safari版本8.0.8 我在safari驱动程序中运行测试执行时遇到了一个问题 "In parallel execution, if in one safari window,login is successfull, than in other safari windows, this login page is not shown, that means safri navigate to url

我使用的是selenium web驱动程序2.48和safari驱动程序2.48以及safari版本8.0.8

我在safari驱动程序中运行测试执行时遇到了一个问题

"In parallel execution, if in one safari window,login is successfull, than in other 
safari windows, this login page is not shown, 

that means safri navigate to url with 
out login as one safari window already complete login."
因此,我在并行执行中面临以下问题:

"CSRF verification failed.Request aborted"
if five safari browser window open, in each window, login page will be appeared.

In a sense, each safari driver instance will not share other safari driver  
instances resources or any other thing
对于并行执行,我希望这样:

"CSRF verification failed.Request aborted"
if five safari browser window open, in each window, login page will be appeared.

In a sense, each safari driver instance will not share other safari driver  
instances resources or any other thing
我已经更改了safari的首选项设置,但没有帮助

有没有最好的方法来声明safari驱动程序,或者我需要添加任何所需的功能或 safari偏好中的任何其他内容或任何好的建议

谢谢你

我正在使用以下代码:

SafariOptions safariOptions = new SafariOptions();
safariOptions.setUseCleanSession(true);

DesiredCapabilities dc = DesiredCapabilities.safari();
dc.setCapability(SafariOptions.CAPABILITY, safariOptions);

currentDriver = new SafariDriver(dc);


Set<Cookie> cookies = currentDriver.manage().getCookies();
currentDriver.manage().deleteAllCookies();
if(!cookies.isEmpty())
    {

    Iterator<Cookie> iter=  currentDriver.manage().getCookies().iterator();
    while(iter.hasNext()){
                Cookie C = iter.next();                     
          }
     cookies.clear();

    }
SafariOptions SafariOptions=新的SafariOptions();
safariOptions.setUseCleanSession(true);
DesiredCapabilities dc=DesiredCapabilities.safari();
dc.setCapability(SafariOptions.CAPABILITY,SafariOptions);
currentDriver=新的SafariDriver(dc);
设置cookies=currentDriver.manage().getCookies();
currentDriver.manage().deleteAllCookies();
如果(!cookies.isEmpty())
{
迭代器iter=currentDriver.manage().getCookies().Iterator();
while(iter.hasNext()){
Cookie C=iter.next();
}
cookies.clear();
}

我个人以前从未使用过safari。正如您所说,所有其他浏览器中的行为都与您预期的一样。我想让你试试下面的。
有一种方法可以指定要使用的驱动程序实例的概要文件。我建议您为每个实例创建单独的配置文件并进行尝试。如何做到这一点在本文中进行了解释。这个答案解释了如何每次使用相同的配置文件。每次都需要使用不同的配置文件。(chrome默认情况下会发生这种情况,不知道为什么safari不会发生这种情况)

您现在是如何创建驱动程序实例的。这不应该发生,因为默认情况下,每个浏览器实例都应该有一个新的临时配置文件。如下所示:if(browser.equals(“safari”){currentDriver=new SafariDriver();}我确保了空检查。实际上,如果我知道safari驱动程序实例如何不共享其他safari驱动程序实例资源,以及如何在并行执行中清除会话,这将对我很有帮助。我的代码在chrome和mozilla firefox并行执行中运行良好,问题只出现在safari驱动程序中。驱动程序实例创建的代码是这样的,除了空值检查,我不使用任何其他东西。你使用的是Windows吗?我希望您已经了解了我使用的是Mac OS X Yosemite版本10.10.5和safari版本8.0.8谢谢您的回复。Safari没有“个人资料”这样的东西。如果有人想要一个干净的会话,他需要在safari.options字典中设置cleanSession,该字典包含我在代码中已经做过的功能………:(是的,我读到了。我想你是对的。你需要在safari中切换帐户,他们没有配置文件的概念