【问题标题】:Multiprocessing and selenium, running multiple browsers in parallel?多处理和硒,并行运行多个浏览器?
【发布时间】:2015-01-07 02:55:04
【问题描述】:

我目前有一个 HTML 页面,我通过 Selenium 打开并单击元素、填写表单并保存。

但这很慢,我真的想加快速度。 我想同时运行多个浏览器,为每个浏览器提供不同的xpaths 进行点击。这可能吗?

截至目前,我有一个包含三个用户对象的列表。我想为每个用户运行 3 个单独的 selenium 进程,它们都访问同一个网页,但单击不同的元素。我想同时做这件事。

这是我的代码(不工作):

def main():
    pool = Pool(processes=4)
    pool.map(bookRooms, users)

...

def bookRooms(users):
    if not users:
        logging.error("No available times")
    else:
        driver = Browser('phantomjs')
        driver.visit(url)

        for user in users:
            for xpath in user.xpaths:

                driver.find_by_xpath(user.getXPath()).click()

                driver.find_by_xpath("id('save')").click()

                driver.find_by_name("username").fill(user.getUsername())

                driver.find_by_name("password").fill(user.getPassword())

                driver.find_by_name("submit").click()

        driver.close()

所以如果你想象我的列表看起来像这样:

[User1, User2, User3]

如何调用bookRooms() 方法,使其像这样并行运行:

bookRooms(User1)
bookRooms(User2)
bookRooms(User3)
...

基本上,分解列表并在每个元素上运行方法。 Selenium 甚至可以以这种方式工作吗?

谢谢

【问题讨论】:

    标签: python multithreading selenium multiprocessing threadpool


    【解决方案1】:

    我找不到关于 Selenium+Python 多线程的任何内容,但以下 Blog post 描述了多处理 - 我可能会从那里开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 2016-05-30
      相关资源
      最近更新 更多