我编写了一个测试代码以跳过识别哪个是滑块的问题。我使用pyppeteer模块。但是,当我尝试悬停滑块并移动鼠标时,我发现尽管我在move方法中使用了delay选项,但是移动速度无法控制。似乎不起作用。
我的代码如下:
@tries(retry_if_result_none)
async def mouse_slide(box=None, page=None):
try:
await page.hover('#nc_1_n1z') #move to slider button
await page.mouse.down() # press tee mouse
await page.mouse.move(box['x']+box['width'], box['y'], {'delay': random.randint(1000, 2000)}) # move mouse to speial location
await page.mouse.up() # release mouse
except Exception as e:
print(e, '***********************************:slide login False')
slider_move_text = await page.Jeval('.errloading .nc-lang-cnt', 'node => node.textContent');
if "哎呀,出错了,点击" in slider_move_text:
refresh_btn = await page.querySelector('.errloading .nc-lang-cnt a');
await page.evaluate('(element) => element.click()', refresh_btn);
await asyncio.sleep(3);
slider = await page.querySelector('#nocaptcha');
box = await slider.boundingBox();
return None
else:
await asyncio.sleep(1)
slider_again = await page.Jeval('.nc-lang-cnt', 'node => node.textContent')
if slider_again != '验证通过':
return None
else:
await page.screenshot({'path': './headless-slide-result.png'})
return 1
代码{'delay':random.randint(1000,2000)}不起作用,鼠标移动得太快了。我用过的地方有问题吗?
答案 0 :(得分:1)
mouse.move没有延迟选项。
您可以尝试像这样循环移动和睡觉:
for (var i = 0; i < 10; i++) {
await page.mouse.move(i * 10, i * 10);
await page.waitFor(100);
}