如何基于文本上下文在对应区块中选择并点击指定时间段选项
问题:定位并点击指定日期下的时间段选项
网页结构(包含周三、周四的时间段选项)
<li class="list-group-item"> <strong>Wednesday</strong> <br> <label> <input type="radio" name="dtf" value="10"/> 09:45 AM - 11:00 AM </label> <label> <input type="radio" name="dtf" value="20"/> 11:30 AM - 02:00 PM </label> <label> <input type="radio" name="dtf" value="30"/> 05:00 PM - 08:00 PM</label> </li> <li class="list-group-item"> <strong>Thursday</strong> <br> <label> <input type="radio" name="dtf" value="40"/> 09:45 AM - 11:00 AM </label> <label> <input type="radio" name="dtf" value="50"/> 11:30 AM - 02:00 PM </label> <label> <input type="radio" name="dtf" value="60"/> 05:00 PM - 08:00 PM</label> </li>
需求与现有代码
需求:根据指定星期,点击其下方对应的时间段(例如周四下的“11:30 AM - 02:00 PM”)。
目前已实现定位到星期所在区块的代码:
var recital = await page.$$('.list-group-item'); for (let i = 0; i < recital.length; i++) { var text = await page.evaluate(el => el.innerText, recital[i]); if(text.indexOf("Thursday") > -1 ) { try { await recital[i].click(); console.log("Click!"); } catch { console.log("No click!"); }}}
问题:如何在上述代码的try块中,实现点击周四下的“11:30 AM - 02:00 PM”选项?
解决方案(嵌套循环实现)
通过嵌套循环遍历目标日期下的所有时间段选项,定位到目标后点击,代码如下:
var recital = await page.$$('.list-group-item'); console.log("length:", recital.length); for (let i = 0; i < recital.length; i++) { var text = await page.evaluate(el => el.innerText, recital[i]); if(text.indexOf("Thursday") > -1 ) { var sd = await recital[i].$$('label'); console.log("length of time:", sd.length); for (let j = 0; j < sd.length; j++) { var sday = await page.evaluate(el => el.innerText, sd[j]); console.log("what time is it:", sday); if(sday.indexOf("11:30 AM - 02:00 PM") > -1 ) { try { await sd[j].click(); console.log("Click!"); } catch { console.log("No click!"); } } } } }
内容的提问来源于stack exchange,提问作者issik kul
相关产品推荐
相关产品推荐

