Java 如何使用selenium模拟人类在弹出对话框中滚动?

Java 如何使用selenium模拟人类在弹出对话框中滚动?,java,python,selenium,Java,Python,Selenium,在我正在分析的页面上,会出现一个标签为“.isgrP”的对话框,我需要它向下滚动并浏览出现的列表以继续。我在stackoverflow中搜索解决方案,找到的最接近的解决方案是: WebDriverWait(driver, 10).until(lambda d: d.find_element_by_css_selector('div[role="dialog"]')) driver.execute_script(''' var fDialog = document.querySelect

在我正在分析的页面上,会出现一个标签为“.isgrP”的对话框,我需要它向下滚动并浏览出现的列表以继续。我在stackoverflow中搜索解决方案,找到的最接近的解决方案是:

WebDriverWait(driver, 10).until(lambda d: d.find_element_by_css_selector('div[role="dialog"]'))

driver.execute_script('''
    var fDialog = document.querySelector('div[role="dialog"] .isgrP');
    fDialog.scrollTop = fDialog.scrollHeight
''')

我相信我遇到的这个解决方案使用Java,而不仅仅是selenium或python。此代码的问题是它滚动过快,被检测为机器人,因此页面不再加载。我想知道是否有办法降低滚动速度或使其模仿人类的滚动速度?

最接近缓慢滚动的方法是以较小的增量滚动,并在每次滚动之间等待。但是,每个单独的“滚动”动作看起来仍然像机器人。对于不允许机器人程序的网站,有一些小的解决办法,但总的来说,Selenium根本不打算在这些网站上使用。这些命令会使滚动速度变慢吗?我想测试我是否可以使用一个randomint变量来代替设定的速度。尝试模拟这个答案中提到的滚轮滚动。我描述了如何平滑滚动,以防你不知道页面将滚动多长时间。