Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将创建SeleniumWebDriver实例的语句放在函数内部/外部如何影响按xpath查找元素?_Selenium_Xpath_Webdriver_Multiprocessing_Instance - Fatal编程技术网

将创建SeleniumWebDriver实例的语句放在函数内部/外部如何影响按xpath查找元素?

将创建SeleniumWebDriver实例的语句放在函数内部/外部如何影响按xpath查找元素?,selenium,xpath,webdriver,multiprocessing,instance,Selenium,Xpath,Webdriver,Multiprocessing,Instance,请参阅以下代码: 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(blo

请参阅以下代码:

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:)

现在,这很好,但需要大量的时间。因此,我计划将语句
driver2=webdriver.Firefox()
放在
parse
函数之外,这样我就不会每次调用函数时都重新创建webdriver的实例。[我还从这个函数中删除了语句
driver2.quit()。这节省了时间,但是,打印状态
print(块详细信息\u web元素)
几乎有一半的时间返回
None
作为输出

我怀疑
find\u elements\u by\u xpath
方法是否工作不正常。这是因为我正在使用多重处理吗

任何洞察,为什么会发生这种情况?请提出解决办法

编辑:(这是错误)
()

find\u element\u by\u xpath
不会返回
None
,它将返回元素或抛出
TimeoutException
。这是因为我正在使用多重处理吗?这可能是原因,你误解了。语句[print(block\u details\u web\u element)]在这些情况下打印“none”,语句[print(block\u details\u web\u element.text)]在这些情况下打印“none type element has no attribute text”。如果
print(block\u details\u web\u element)
打印
none
,这意味着
block\u details\u web\u元素
None
,这意味着
通过xpath查找元素
返回
None
。这是不可能的。它可能是来自另一个地方的多处理或
None
的东西。请看我得到了这个错误:请看错误: