我正在为一个精灵宝可梦MMORPG游戏写一个机器人。我写了一个脚本来登录我的帐户并四处移动,问题是当我到处移动时,我有时会找到一个pokemon,然后创建一个新的div,其中包含pokemon的数据。我还得到了一个按钮( id为'# catch ')来捕获pokemon。所以我编写了这个脚本,让它可以检查#catch按钮。这是我的代码
while (true) {
await page.waitFor(500);
await page.keyboard.press("ArrowDown");
if ((await page.$("input#catch")) != null) {
console.log("Pokemon Found!");
} else {
console.log("No Pokemon Found");
}然而,我每次都会看到“找不到精灵宝可梦”,即使有。
发布于 2019-10-02 17:48:47
可以使用vanilla javascript检查元素是否存在
if(document.getElementById('catch').length > 0){
console.log("Pokemon Found!");
}else{
console.log("No Pokemon Found");
}发布于 2019-10-02 19:14:02
我发现在代码中使用‘waitForSelector’并不可靠,效率也不高。如果你把它们设得太小,如果网络延迟或其他原因,那么你就会失败。如果你把它们设得很大,那么你的代码就会永远做不到。在我的代码中,我一直是WaitFor。它有一个等待/超时可以扩大。
示例:
async clickSomeButton(cssSelector) {
if (await page.waitForSelector(cssSelector, 10000)) {
await page.click(cssSelector);
return;
}
return fail;
}https://stackoverflow.com/questions/58198813
复制相似问题