为每次点击返回多个 PNG 图像

我正在尝试为每次点击返回多个 PNG 图像。我已经设置好了获取每次点击的多个坐标,并将这些坐标存储在一个表中。然后,循环表的键/值以获取每个点击。但是,当我运行整个函数时,它只产生了由 splash.args.url 生成的第一页,并未包含循环内的点击。如何有效地将点击整合到循环内以产生多个图像?

treat = require("treat")
function page_info(splash, url)
  local ok, msg = splash:go(url)
  if not ok then
    return {ok=false, reason=msg}
  end
  local res = {
    html=splash:html(),
    title=splash:evaljs('document.title'),
    image=splash:png(),
    ok=true,
  }
  return res
end
function main(splash)
    assert(splash:go(splash.args.url))
    local get_dimensions = splash:jsfunc([[
        function () {
var rect = document.querySelector('checkbox[number="1"]').getClientRects()[0];
var rect2 = document.querySelector('checkbox[number="2"]').getClientRects()[0];

    return {"x": rect.left, "y": rect.top,
  "x2": rect2.left, "y2": rect2.top}

        }
    ]])
    splash:set_viewport_full()
    splash:wait(0.1)
    local dimensions = get_dimensions()
    -- FIXME: button must be inside a viewport
  local stuff = {[dimensions.x]=dimensions.y,
  [dimensions.x2]=dimensions.y2}

  local result = treat.as_array({})
  local a = 1
  for keys, values in ipairs(stuff) do
    while a < 3 do
    splash:mouse_click(keys, values)
    a = a+1
    result[a] = page_info(splash, url)
    end
  end
    -- Wait split second to allow event to propagate.
    splash:wait(0.1)
    return result
end

我可以逐个运行每次点击,但是我该如何存储每次点击的结果并返回它?

因为我得到了一个空数组:

Splash 响应:Array[0]

原文链接 https://stackoverflow.com/questions/70514090

点赞