我正在开发一个应用程序,它通过使用芹菜的异步任务使用selenium firefox web驱动程序获取页面的屏幕截图。我观察到的是,当轮询同时启动多个Web驱动程序实例时,如果已加载元素,它会挂起。
有没有办法可以在一段超时间隔后强行关闭网页驱动程序?
或者还有其他方法可以解决这个问题吗?有什么建议吗?
相关守则:
def open_url_in_virtual_display(self, url, browser, selector=None):
browser.get(url)
def find_element(browser):
log.info("waiting for selector to be loaded : {0}".format(selector))
found = False
is_stale = True
while is_stale:
try:
ele_found = browser.find_element_by_css_selector(selector).is_displayed()
#it hangs over here.
log.info(" element found flag : {0}".format(ele_found))
if ele_found:
found = True
except StaleElementReferenceException:
is_stale = True
else:
is_stale = False
return found
def wait_until_function_returns_true(browser, fn, timeout):
ret_val = False
try:
ret_val = ui.WebDriverWait(browser, timeout).until(fn)
except TimeoutException as e:
return ret_val
else:
return ret_val
wait_until_function_returns_true(browser, find_element, 10)
self.browser.implicitly_wait(3)
每次请求截屏时都会启动此方法。