Java 通过URL HeadlessChrome进行Selenium基本身份验证(在Linux服务器上)
在Selenium测试中,我需要测试一个使用基本Authen的网页, 知道我正在使用Chrome无头Java和Selenium WebDriver。 在我的机器“本地”上,它使用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
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还是找到另一种身份验证方法?我想晚一点是可能的,但我不太确定。。