Ошибка Lua: 'null не является объектом (оценивает \' document.querySelector ...). Click \ ')' - PullRequest
0 голосов
/ 25 января 2019

Я очищаю https://www.tayara.tn/sc/immobilier/appartements, и мне нужно нажать на кнопку «загрузить еще», чтобы я использовал этот скрипт Lua:

function main(splash, args)
  assert(splash:go(args.url))
  assert(splash:wait(0.5))
  assert(splash:runjs('document.querySelector(".DbXTC b7ygi _1JgR4 _1U08s button").click()'))
  splash:set_viewport_full()
  return {
   html = splash:html(),
   png = splash:png(),
   har = splash:har(),
 }
end

после нажатия на кнопку «рендеринга» у меня была эта ошибка:

{
"description": "Error happened while executing Lua script",
"type": "ScriptError",
"info": {
    "line_number": 4,
    "type": "LUA_ERROR",
    "error": "JS error: 'TypeError: null is not an object (evaluating \\'document.querySelector(\".DbXTC b7ygi _1JgR4 _1U08s button\").click\\')'",
    "message": "Lua error: [string \"function main(splash, args)\r...\"]:4: JS error: 'TypeError: null is not an object (evaluating \\'document.querySelector(\".DbXTC b7ygi _1JgR4 _1U08s button\").click\\')'",
    "source": "[string \"function main(splash, args)\r...\"]"
},
"error": 400
}

что я сделал не так?

1 Ответ

0 голосов
/ 25 января 2019

Похоже, document.querySelector(".DbXTC b7ygi _1JgR4 _1U08s button") возвращает null, в этом случае вы вызываете метод click для null..DbXTC b7ygi _1JgR4 _1U08s не имеет смысла: он соответствует тегу <button> внутри тега <_1U08s> внутри тега <_1JgR4> внутри тега <b7ygi> внутри тега с классом DbXTC.Нет такого элемента, поэтому document.querySelector возвращает null.document.querySelector(".DbXTC button") кажется, работает.

...