当前位置: 首页 > 知识库问答 >
问题:

使用Chrome无头浏览器实现自动化,每次都需要OTP

韦正业
2023-03-14

我正在使用java和无头chrome自动化selenium自动化工具中的一个应用程序。

我的应用程序在首次登录计算机或新浏览器(chrome/mozila/IE)时需要OTP验证。一旦在机器或浏览器上验证了OTP,从下次开始它将不会请求输入OTP。登录就足够了。

由于我正在自动化的无头浏览器,我想我可以通过第一次在控制台中输入OTP来提供OTP并进行验证,并且从下一次开始它可能不会要求OTP。

System.setProperty("webdriver.chrome.driver", constant.browserPathChrome);
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(true);
chromeOptions.addArguments("--enable-javascript");
chromeOptions.addArguments("--disable-gpu");
driver = new ChromeDriver(chromeOptions);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.get("my application url");

但chrome headless每次都会要求OTP,当我从同一台机器上启动站点时,即使是在我的机器上第一次通过在控制台中提供收到的OTP作为输入来验证它之后。但每次自动化时,我都不能给出OTP。如何让它像其他浏览器一样工作?我应该添加哪些功能?

幻影js没有这种问题,当我第一次通过控制台提供OTP时,它需要验证,从下一次开始它不会要求OTP。但由于其他一些原因,我无法使用彭顿。js。我想用镀铬无头。

共有1个答案

江俊能
2023-03-14

Selenium将为每次运行创建一个新的browser实例,因此它为每次运行请求OTP是有效的。

一种解决方案可能是,您可以在启动浏览器实例时添加Chrome配置文件,以便selenium选择此配置文件,而不是启动其默认配置文件。

chromeOptions.addArguments("user-data-dir=path_of_chrome_profile");

chrome配置文件路径可以是您的本地路径或存储库路径

 类似资料:
  • 问题内容: 主要区别在于,基于GUI和非GUI(Headless)执行。 我正在寻找所有Headless浏览器之间的差异,但是很遗憾,我没有找到任何差异。我一个接一个地经历,这使我更加困惑。如果有人可以分享具有差异的简短信息,那就太好了,这很清楚。 问题答案: 浏览器 一个 浏览器是一个应用程序,它提供了一种方法来看待和相互作用与所有的万维网上的信息。从技术上讲,浏览器 (也称为 Web浏览器 或

  • 线程“main”java.lang.IllegalStateException中的异常:驱动程序可执行文件的路径必须由WebDriver.Chrome.driver系统属性设置;有关更多信息,请参见https://github.com/seleniumhq/selenium/wiki/chromedriver。最新版本可从http://chromedriver.storage.googleapis

  • 我正在使用ChromeDriver V2.24,我的系统中有Chrome Browser52(未安装,可执行文件)。 NosuchSessionException:没有这样的会话 控制台: 注意:在Windows安全更新之前,当我使用ChromeDriver3.1和Chrome58时,我的脚本运行良好。更新后,我无法启动Chrome浏览器,因为它不是启动浏览器,而是在后台运行。

  • 在Chrome浏览器插件里,对网页实现自动上传文件的问题。 页面里的上传按钮 插件里的js代码 这样能唤起上传文件选择弹框,再手动选择文件是没问题。 但是想实现自动化,不要人工干预,有什么办法? 模拟 输入、点击 操作没有问题,这个上传整不会了。

  • 问题内容: 当我运行脚本时,出现此错误 这是我的剧本 问题答案: 如果我们分析日志,似乎主要问题在于in 和随后的错误消息 。 因此,从错误中很明显,Python客户端无法找到 二进制文件。 您必须在这里注意以下几点: :参数配置 不是 将选择的文件路径, 但不会 在末尾追加。 这里是我的示例代码系统开始 在 :

  • 我在配置文件中将浏览器名设置为firefox。 我启动selenium服务器:webdriver-Manager--gecko start。我有gecko驱动版本0.26.0和火狐版本65。当我运行量角器conf.js时,它仍然会触发Chrome。我尝试运行已弃用的独立服务器。即selenium-独立npm,它仍然会触发Chrome。我还安装了最新的量角器。NodeJS: 10.21.0