多线程find_element与selenium

时间:2015-08-18 21:20:10

标签: python multithreading selenium selenium-webdriver

我试图通过多线程处理我的脚本中更耗时的部分来减少执行时间,这主要是定位器调用。

然而,我一直在" CannotSendRequest"和#34; ResponseNotReady"来自两个线程的异常。

这是因为我使用相同的http句柄吗?

input_worker = threading.Thread(name="input_worker", target=find_input_fields, args=(form, args, logger))
input_worker.setDaemon(True)
select_worker = threading.Thread(name="select_worker", target=find_select_fields, args=(form, logger))
select_worker.setDaemon(True)

thread_pool.append(input_worker)
thread_pool.append(select_worker)

在find_input_fields函数中就像是

input_fields = form.find_elements_by_tag_name("input")

1 个答案:

答案 0 :(得分:1)

Selenium每个线程需要1个cpu核心。并且Selenium webdriver不建议使用多线程。考虑如果你有一个4核系统,你可以运行链接到每个核心的4个selenium单独的线程。 在创建2个线程时,您将从两个线程中获得异常。

FYI

Is it possible to parallelize selenium webdriver get_attribute calls in python?