Lua脚本失败但JS在控制台工作

我有一个非常基本的Lua脚本,返回错误,但是在控制台中直接运行querySelector就可以正常工作。有什么建议可以修复我的lua吗?

function main(splash, args)
      assert(splash:go(args.url))
      assert(splash:wait(1))
      assert(splash:runjs('document.querySelector("button.btn.btn-primary.btn-show-rates").click()'))
      splash:set_viewport_full()
      return {
        html = splash:html(),
      }
    end

顺便说一下:网站在这里

错误日志:

{
"type": "ScriptError",
"error": 400,
"info": {
    "type": "LUA_ERROR",
    "line_number": 4,
    "error": "JS error: 'TypeError: null is not an object (evaluating \\'document.querySelector(\"button.btn.btn-primary.btn-show-rates\").click\\')'",
    "message": "Lua error: [string \"function main(splash, args)\r...\"]:4: JS error: 'TypeError: null is not an object (evaluating \\'document.querySelector(\"button.btn.btn-primary.btn-show-rates\").click\\')'",
    "source": "[string \"function main(splash, args)\r...\"]"
},
"description": "在执行Lua脚本时发生错误"
}
点赞
用户10642149
用户10642149

结果发现这有点简单...

稍微等待一段时间,改用document.querySelectorAll就可以工作了。最终代码如下:

function main(splash, args)
  assert(splash:go(args.url))
  assert(splash:wait(5.0))
  assert(splash:runjs('document.querySelectorAll("button.btn.btn-primary.btn-show-rates")[0].click()'))
  assert(splash:runjs('document.querySelectorAll("button.btn.btn-primary.btn-show-rates")[1].click()'))
  assert(splash:runjs('document.querySelectorAll("button.btn.btn-primary.btn-show-rates")[2].click()'))
  splash:set_viewport_full()
  return {
    html = splash:html(),
  }
end
2018-12-26 16:33:27