【发布时间】: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