Casperjs thenClick打开datepicker,但无法检索日历内的任何内容

问题描述 投票:0回答:1

我试图从jQuery UI Datepicker日历中抓取日期信息。

日历有几天有可点击的链接。

我想要那些链接。

该日历适用于网站上的人类,但CasperJS无法访问其中的数据,即使casper.thenClick(...the xpath to the calendar...)实际打开日历。

我的意思是,我可以通过做一个casper.capture(...)来查看空日历。

使用Chrome,我可以找到我需要的XPath,没问题。

为什么我不能让CasperJS获取datepicker日历中的数据?

这是代码:

var casper = require('casper').create();
var utils = require('utils');
var x = require('casper').selectXPath;
casper.userAgent('Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201');

casper.start('http://www.hawaiifoodtours.com/north-shore-food-tour/');

casper.then(function() {
    // Click on 1st result link
    this.click('#date_a6130');
    console.log('clicked on calendar');
});

casper.wait(1000, function(){
    casper.capture('theCalendar.png');
    // this is the XPath Chrome gives me. No problem. 
    var stuff = casper.getElementsInfo(x('//*[@id="dp1444234738328"]/div/table/tbody'));
    utils.dump(stuff);
});

casper.run();

我根据Artjom B的建议添加错误消息:

ResourceError: {
    "errorCode": 2,
    "errorString": "Connection closed",
    "url": "https://www.hawaiifun.org/reservation/common/jquery/css/ui-lightness-1.10.3.css"
}
ResourceError: {
    "errorCode": 2,
    "errorString": "Connection closed",
    "url": "https://www.hawaiifun.org/reservation/common/datepicker_availability.css"
}
clicked on calendar
ResourceError: {
    "errorCode": 2,
    "errorString": "Connection closed",
    "url": "https://www.hawaiifun.org/reservation/companyservlet?callback=jQuery19102756042554974556_1444269910798&action=COMMON_AVAILABILITYCHECKJSON&activityid=6130&agencyid=0&blocksonly=false&year_months=2015_10&webbooking=true&hawaiifunbooking=false&agencybooking=false&minavailability=&_=1444269910799"
}
CasperError: Cannot get information from xpath selector: //*[@id="dp1444234738328"]/div/table/tbody/tr[5]/td[3]/a: no elements found.
javascript xpath datepicker phantomjs casperjs
1个回答
0
投票

运行代码后,我收到以下错误:

clicked on calendar
CasperError: Cannot get information from xpath selector: //*[@id="dp1444234738328"]/div/table/tbody: no elements found.
  /home/user/phantomjs:/platform/casper.js:1173 in getElementsInfo
  /home/user/phantomjs:/code/casperjs.js:17
  /home/user/phantomjs:/platform/casper.js:2368 in _check

通过将XPath选择器更改为//*[@class="ui-datepicker-calendar"]/tbody,我能够无错运行程序。

这是完整的工作计划:

var casper = require('casper').create();
var utils = require('utils');
var x = require('casper').selectXPath;

casper.userAgent('Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201');

casper.start('http://www.hawaiifoodtours.com/north-shore-food-tour/');

casper.then(function () {
  // Click on the 1st Result Link
  this.click('#date_a6130');

  this.echo('clicked on calendar');
});

casper.wait(1000, function () {
  casper.capture('theCalendar.png');

  // Updated XPath
  var stuff = casper.getElementsInfo(x('//*[@class="ui-datepicker-calendar"]/tbody'));

  utils.dump(stuff);
});

casper.run();

注意:我使用CasperJS 1.1.4和PhantomJS 2.1.1。

© www.soinside.com 2019 - 2024. All rights reserved.