gpt4 book ai didi

javascript - 等待所有 ajax 调用在 selenium webdriverjs 中终止

转载 作者:行者123 更新时间:2023-11-28 06:41:14 25 4
gpt4 key购买 nike

我正在尝试实现一个函数,该函数允许我等待任何正在运行的(jQuery)ajax 调用在 selenium webdriverjs 测试环境中终止。我当前的工作假设是我需要正确集成以下元素:

  • 使用 WebDriver.wait 实际等待条件
  • 使用 $(document).ajaxStop(function () {...}); 确定是否终止所有 ajax 调用
  • 使用WebDriver.executeAsyncScript在浏览器中调用所需的JavaScript代码

我想象这样的事情:

const PREPARE_SCRIPT = 'window.ajax_running = false;
$(document).ajaxStart(function () {window.ajax_running = true;});
$(document).ajaxStop(function () {window.ajax_running = false;});';
driver.executeAsyncScript(PREPARE_SCRIPT)
driver.wait(function () {
return driver.executeAsyncScript('return window.ajax_running === false;');
});

不幸的是,我似乎没有所需的经验来让所有需要的元素一起工作,否则我可能完全走在错误的轨道上,并且有更好的解决方案。

最佳答案

尝试使用executeScript(同步模式)。使用console.log进行调试(使用Chrome测试)。

在官方javadoc下面: http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/RemoteWebDriver.html

下面是一个片段:

 driver.executeScript("window.ajax_running = true;");
driver.executeScript("$(document).ajaxStart(function ()
{console.log(\"ajaxStart\"); window.ajax_running = true;});");
driver.executeScript("$(document).ajaxStop(function ()
{console.log(\"ajaxStop\"); window.ajax_running = false;});");
sysout(driver.executeScript("return window.ajax_running"));

HTH

关于javascript - 等待所有 ajax 调用在 selenium webdriverjs 中终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33789796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com