Java 通过URL HeadlessChrome进行Selenium基本身份验证(在Linux服务器上)

Java 通过URL HeadlessChrome进行Selenium基本身份验证(在Linux服务器上),java,selenium,google-chrome,cucumber,headless-browser,Java,Selenium,Google Chrome,Cucumber,Headless Browser,在Selenium测试中,我需要测试一个使用基本Authen的网页, 知道我正在使用Chrome无头Java和Selenium WebDriver。 在我的机器“本地”上,它使用driver.get(“https://admin:admin@本地主机…) 然后 driver.get(“https://localhost..)例如。 我知道Chrome已经不支持这个功能了,但是我在这里根据某人的解决方案,通过传递第一个带有凭据的URL和第二个不带凭据的URL,成功地实现了这个功能。 但是当我在Li

在Selenium测试中,我需要测试一个使用基本Authen的网页, 知道我正在使用Chrome无头Java和Selenium WebDriver。 在我的机器“本地”上,它使用
driver.get(“https://admin:admin@本地主机…)
然后
driver.get(“https://localhost..)例如。
我知道Chrome已经不支持这个功能了,但是我在这里根据某人的解决方案,通过传递第一个带有凭据的URL和第二个不带凭据的URL,成功地实现了这个功能。
但是当我在Linux服务器上的remote(Jenkins)上运行它时,我得到了以下错误

浏览器的配置不接受cookie

。当我可以配置Chrome浏览器时,我对服务器没有任何看法。没有任何想法可以让它在不面对这个问题的情况下工作

我知道以前有很多人问过这个问题,但我没有找到任何有效的答案。

尝试ChromeDriver()或更改保存cookie的位置:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

否则(默认情况下),它将在每次启动会话时创建一个新的临时目录。

ChromeOptions options=new ChromeOptions()

//用于启用帐户一致性的命令行标志。默认模式已禁用

options.addArguments(“--帐户一致性”)

//将从启动时开始记录到文件的Chrome

options.addArguments(“--log net log=C:/some_path/resource/log.json”)

//设置要在网络日志中捕获的事件的粒度

options.addArguments(“--net日志捕获模式=IncludeCookiesAndCredentials”)


试试这个,基本上,它会在启动chrome浏览器时保存日志,然后设置帐户一致性。您可以在日志的任何位置调试该问题。

您好,我设法解决了该问题(我忘了提到我们的网站受Siteminder保护),因此我执行了以下操作:

1-我们在URL上插入用户和密码:

我们面临的问题是,显示的提示不是页面HTML的一部分,使用Selenium很难捕捉到它。我们通过在URL中直接注入用户登录名和用户密码进行管理,如下所示: ‘’ 这将启动Chrome会话。注意,这只是过程的第一步。尚未执行用户标识

2-我们创建一个新cookie:

启动URL后,我们必须手动创建一个名为«SMCHALLENGE»的cookie,并将其添加到Selenium的当前会话中,例如在JAVA中: 新曲奇(“挑战”,“是”)

3-调用不带用户凭据的URL:

现在设置了SMCHALLENGE cookie,最后一步是再次调用URL()。一旦身份验证成功,SMCHALLENGE cookie将被删除,Siteminder将生成SMSESSION cookie。 SMSESSION cookie现在允许我们调用应用程序并成功地传递Siteminder,就像正常登录一样(通过SSO)


如果您尝试一下,请告诉我。

我也面临同样的问题。还有一个problem@SolomonRaja那么,您想启用cookie还是找到另一种身份验证方法?我想晚一点是可能的,但我不太确定。。