为什么在pyppeteer中将delay选项在mouse.move方法中不起作用以进行跳过识别时

时间:2018-12-04 02:14:53

标签: python puppeteer

我编写了一个测试代码以跳过识别哪个是滑块的问题。我使用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)}不起作用,鼠标移动得太快了。我用过的地方有问题吗?

1 个答案:

答案 0 :(得分:1)

mouse.move没有延迟选项。

您可以尝试像这样循环移动和睡觉:

for (var i = 0; i < 10; i++) {
    await page.mouse.move(i * 10, i * 10);
    await page.waitFor(100);
   }