首页 > 解决方案 > 在函数内部/外部放置创建 Selenium WebDriver 实例的语句如何影响 find_elements_by_xpath?

问题描述

参考以下代码:

def parse(height_id):
   driver2=webdriver.Firefox()
   driver2.get(height_id)
   block_details_web_element=driver2.find_element_by_xpath('//*[@id="__next"]/div[3]/div/div[3]/div[1]/div/div')
   print (block_details_web_element)
   print(block_details_web_element.text)

   print(" --- BLOCK PARSED SUCCESSFULLY! ---\n")
   driver2.quit()

#the following parts are outside the function: 
p = Pool(4)
records = p.map(parse, height_list_on_each_page2) #height_list_on_each_page2 is a list of URLs.
p.terminate()
p.join()

(例如,典型的 URL:https ://www.blockchain.com/btc/block/000000000000000000028e473f1c95060a63100c9861525105b1f5ced81a7fa0 )

现在,这工作正常,但需要大量时间。所以,我打算把语句放在函数driver2=webdriver.Firefox()外面parse,这样就不用在每次调用函数时都重新创建 WebDriver 的实例了。[我还driver2.quit()从这个函数中删除了语句]。然而,这节省了时间,打印语句作为输出print (block_details_web_element)返回的时间几乎有一半。None

我怀疑该find_elements_by_xpath方法无法正常工作。这是因为我正在使用多处理吗?

任何见解,为什么会这样?请提出解决方案。

编辑:(这是错误)(https://www.dropbox.com/s/1yvknbdg9wefuwy/selenium.jpeg?dl=0

标签: seleniumxpathwebdrivermultiprocessinginstance

解决方案


推荐阅读