我被要求创建一个任务,该任务单击网站上的随机链接(以进行测试)。
所以我有这样的东西:
Select Department,
Count(distinct EmployeeID) as Employees,
Min(Salary) as Min,
Max(Salary) as Max
From Employees
Group by Department;
1)注意,我必须内联 await page.evaluate((a, shuf) =>
{
function shuffle(array)
{
//...
return array;
}
//let's get the first one
let anchor = shuffle([...document.querySelectorAll('a')].filter(...)[0];
(anchor).click();
});
函数,因为否则,它不知道。有什么方法可以将此函数放在shuffle
之外,然后“发送”到评估函数?
2)我不想在评估函数中单击它的锚点(page.evaluate
)。我想返回(anchor).click();
的DOM对象,然后进行其他一些操作,然后然后单击它。问题是DOM是一个未序列化的复杂对象,因此我无法返回它。有什么办法可以解决这个问题?
答案 0 :(得分:1)
1)您需要在浏览器上下文中添加shuffle():
req.then(function(resp) {
var prefix = 'wi wi-';
var code = resp.weather[0].id;
var icon = weatherIcons[code].icon;
// If we are not in the ranges mentioned above, add a day/night prefix.
if (!(code > 699 && code < 800) && !(code > 899 && code < 1000)) {
icon = 'day-' + icon;
}
// Finally tack on the prefix.
icon = prefix + icon;
});
现在您可以在评估中使用它:
await page.evaluate(() => {
window.shuffle = array => {
return array.reverse()
}
})
2)也许像这样吗?
let shuffled = await page.evaluate((array) => window.shuffle(array), [1,2,3,4,5])