Сценарий Lua не работает, но JS работает в консоли - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть очень простой скрипт 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": "Error happened while executing Lua script"
 }

1 Ответ

0 голосов
/ 26 декабря 2018

Оказывается, это было довольно просто ...

Немного более долгое "ожидание" и изменение на document.querySelectorВсе заработало.Финальный код здесь:

    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
...