【问题标题】:Headless Chrome and document.location.href change无头 Chrome 和 document.location.href 更改
【发布时间】:2019-05-13 07:49:05
【问题描述】:

我正在尝试自动执行页面上的搜索流程,这需要您登录才能访问搜索表单。我正在将 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,但结果与headless模式相同,重定向回主页而不是搜索表单。

在初始化 webdriver 或无头模式时我应该添加任何其他选项吗?代码中需要一些其他逻辑吗?

【问题讨论】:

  • 你加了wait句号吗?

标签: javascript java selenium selenium-chromedriver


【解决方案1】:

对于无头浏览器,您必须设置窗口大小以触发事件。因为无头浏览器无法识别在没有窗口大小的情况下单击的位置。让我知道它是否有效。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("headless");
chromeOptions.addArguments("window-size=1920,1080");

【讨论】:

  • 您发送的配置也不起作用,但我明白了。我在搜索时更改了每个页面配置的结果,一旦返回的行没有溢出页面大小,事件就正确了解雇和处理(我基本上将结果数量从 50 减少到 7ish)
猜你喜欢
  • 2014-04-13
  • 2019-06-25
  • 2021-06-02
  • 2012-10-23
  • 2017-10-08
  • 2017-12-11
  • 1970-01-01
  • 2023-02-26
  • 2017-07-07
相关资源
最近更新 更多