从js节点的HTML响应和写入条件中捕获文本



我是node js的新手,从未在早期工作过。我需要你帮忙解决这个问题。我有以下代码

async function reserved_slot(page, target_url) {
var fifthwkslotdate= new Date();
fifthwkslotdate.setDate(fifthwkslotdate.getDate() + 7);
await page.goto(`${target_url}en-GB/slots/delivery/${fifthwkslotdate}?slotGroup=1`, {waitUntil: 'networkidle2'});
await page.waitForTimeout(3000);
await page.screenshot({path: 'HomeDeliveryFifthwkPage.png'});
await page.click('[class="button button-secondary small available-slot--button available-slot--button--cc-link-enabled"]');
await page.waitForTimeout(3000);
await page.screenshot({ path: 'Reservedelslotpage.png'});
}

通过使用这个代码,我正在保留插槽。但是,如果页面上没有可用的槽位,我必须到另一个页面预订槽位。

  1. ${target_url}en-GB/slots/delivery/${fifthwkslotdate}?slotGroup=1进入此页面后,我可以通过看到"这些日期的交付插槽已全部预订"这条消息来了解插槽是否存在。如何从上面的HTML页面响应中获取这个值。
  2. 如果插槽可用,我可以使用"await page.click('[class="button button-secondary small available-slot--button available-slot--button--cc-link-enabled"]');"预订插槽,否则我必须通过使用"fifthwkslotdate.setDate(fifthwkslotdate.getDate() + 0);"去其他页面如何实现此条件。

使用页面中可用按钮的长度,我可以在多个星期内保留插槽

const classlength =   await page.evaluate(() => {
return  document.getElementsByClassName("button button-secondary small available-slot--button available-slot--button--cc-link-enabled").length;
});  
console.log('classnamevalue', classlength );
if (classlength > 0) {
await page.click('[class="button button-secondary small available-slot--button available-slot--button--cc-link-enabled"]');
await page.waitForTimeout(3000);           
await page.screenshot({
path: 'Reservedelslot3rdwkpage.png'
});
} else {
var secondwkslotdate = new Date();
secondwkslotdate.setDate(secondwkslotdate.getDate() + 7);
await page.goto(`${target_url}en-GB/slots/delivery/${secondwkslotdate}?slotGroup=1`, {
waitUntil: 'networkidle2'
});
await page.waitForTimeout(3000);
await page.screenshot({
path: 'HomeDelivery2ndwkPage.png'
});
await page.click('[class="button button-secondary small available-slot--button available-slot--button--cc-link-enabled"]');
await page.waitForTimeout(3000);
await page.screenshot({
path: 'Reservedelslot2rdwkpage.png'
});
}
}

最新更新