selenium - 在函数内部/外部放置创建 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)
解决方案
推荐阅读
- hyperledger-fabric - 在 Fabric 中创建参与者标识,类似于 Hyperledger Composer
- reactjs - 如何在服务器端渲染的 React JS 中使用 react-document-meta?
- laravel - 将 Laravel Application .env 变量放入 AWS 软件面板
- ios - iOS 内存崩溃上的 Web 音频 API
- r - st_read() 中的查询问题
- algorithm - 如何修改前缀 trie 数据结构以处理中间的单词?
- c++ - 浮点整数的精确表示
- php - Symfony 使用表单上传文件
- mysql - 从 SQL (MySQL) 中的两个不同表中减去计算值
- c++ - 可以为 lambda 分配名称影响性能吗?