javascript - 无头 Chrome 和 document.location.href 更改
问题描述
我正在尝试使页面上的搜索流程自动化,这需要您登录才能访问搜索表单。我正在将 chromedriver 与 java 一起使用,配置如下:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(true);
chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments("--disable-extensions");
chromeOptions.setExperimentalOption("useAutomationExtension", false);
chromeOptions.addArguments("--enable-javascript");
chromeOptions.addArguments("--no-sandbox","--disable-dev-shm-usage'");
登录后,我可以通过在相关文本框中输入适当的数据来进行搜索。搜索结果页面有一个返回搜索查询页面的按钮,相关按钮和js函数如下所示:
<input class="button" type="button" name="NAME" value="Search Again" onClick="somefunc('some_hash_params_etc')">
.....
function somefunc(url){document.location.href=url; }
但是在无头模式下,单击此按钮最终会出现在主页面上,它会再次询问我的登录凭据。
对于相同的流程,非无头测试工作得非常好,每次按钮单击都会将我重定向到搜索表单,而不会强制我重新登录。
我曾尝试将 url 手动设置为发送到 js 函数的值,并尝试在代码中执行 js,但结果与无头模式相同,重定向回主页而不是搜索表单。
在初始化 webdriver 或无头模式时我应该添加任何其他选项吗?代码中需要一些其他逻辑吗?
解决方案
对于无头浏览器,您必须设置窗口大小以触发事件。因为无头浏览器无法识别在没有窗口大小的情况下单击的位置。让我知道它是否有效。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("headless");
chromeOptions.addArguments("window-size=1920,1080");
推荐阅读
- discord - discord.py wait_for 没有读取消息
- function - 用玩笑模拟导入函数的依赖项
- dax - DAX 度量无法找到所有表
- azure-devops - 如何在 Azure DevOps 中使用具有阶段依赖性的 DependsOn
- bash - 使用文本文件每一行的修改版本作为 sed 命令 (bash) 中的参数
- css - Tailwind CSS 在构建后创建 4 mb 文件
- jestjs - 否则路径未在单例类构造函数上采用
- javascript - 如果用户开始在特定频道中输入内容,如何让我的不和谐机器人仅发送消息?
- r - 从零开始的 k-NN 算法精度低
- html - 如何让垂直滚动条变细,摆脱右下空白?