脚本化主页交互

时间:2019-03-29 10:18:24

标签: javascript automation frontend web-frontend slimerjs

一些背景故事:

瑞典火车运营商SJ列出了很多行程,这些行程无法预定,因为他们的时间表可能会因轨道维护计划而发生变化。

询问时间表何时最终确定时,SJ唯一的回答是,我应该继续登录主页,以便手动监控何时可以释放票证。

您可能会意识到我觉得这是不够的。这样繁琐的任务应该并且可能可以自动化。

到目前为止我的自动化尝试:

slimerjs text output

从图片中可以看出,我已经成功地从首页中获取了相关元素。

该命令已分解:

SLIMERJSLAUNCHER=~/not_applications/Firefox.app/Contents/MacOS/firefox \
slimerjs \
  --headless \
  -profile ~/Library/Application\ Support/Firefox/Profiles/43t6k27y.ver56 \
script/save_table.js \
'https://www.sj.se/en/home.html\#/tidtabell/G%25C3%25B6teborg%2520C/Stockholm%2520Central/enkel/avgang/20190606-1200/avgang/20190606-1500/VU--///0//'

save_table.js如下:

var system = require('system');
var page = require('webpage').create();

page.open(system.args[1], function()
{
    var rows = page.evaluate(function(){
      //document.getElementsByClassName('form-group--checkbox--label')[7].click();
      return document.getElementsByClassName('timetable__row--clickable');
    });
    console.log("===> BEGIN");
    for (i=0; i<rows.length; i++){
      console.log(rows[i].innerText);
      console.log("====");
    };
    phantom.exit();
});

问题:

运行SlimerJS有点棘手,因为它仅适用于<60的Firefox版本。这使我认为我的方法有点过时了。

从javascript中可以看出,我试图单击不间断路线(在浏览器控制台中有效)的复选框,但这完全破坏了slimerJS。

在列出行程之前,如何使页面过滤掉不间断路线?

0 个答案:

没有答案