【问题标题】:use selenium driver for fetching multiple pages in parallel使用 selenium 驱动程序并行获取多个页面
【发布时间】:2020-12-02 12:18:31
【问题描述】:

你能用 chromedriver 并行“获取”多个页面吗?

我正在使用 Python,据我了解 selenium 提供窗口 API,但不允许为新的 driver.get() 操作打开新窗口。尝试在另一个页面正在进行时获取页面对我来说是个问题,尽管我想这可能是我的错误用法。 目前,我正在并行打开多个 chromedriver 会话,这反过来会导致 X 5 次 chrome 进程打开 - 尽管它似乎有效,但它可能会令人生畏。如果在现有会话上调用 driver.get(url)(在检索到上一页之后)可能会在“内部”chrome 进程和膨胀内存中打开额外的选项卡/窗口,我现在只是在徘徊?

【问题讨论】:

  • stackoverflow.com/questions/65088336/…这家伙同时运行多个进程,说不定你会发现什么有趣的地方
  • 听起来您做得对...每个浏览器的每个驱动程序都需要一个线程。不确定你是否可以在 python 中使用多线程。
  • 不,伙计们/姑娘们,你们都错了。刚刚在下面的答案中发现。可以使用 JS 命令 windows.open() 打开一个窗口,然后在当前页面上使用 driver.get + 通过 selenium window_handlers 进行管理。一个会话 + 一个 chrome 浏览器(通常使用 3~5 个进程)。没有线程没有多处理:-)

标签: selenium selenium-chromedriver


【解决方案1】:

您可以通过强制上下文单击来使用 selenium 在新窗口中打开链接: 几个建议: https://stackoverflow.com/a/19152396/1387701 https://stackoverflow.com/a/45582818/1387701

然后您可以使用 switch_to 命令在这些窗口之间切换。 更多信息请访问https://www.browserstack.com/guide/how-to-switch-tabs-in-selenium-python

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 2021-05-23
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多