Selenium Firefox Web驱动程序在启动多个Web驱动程序实例时冻结

时间:2015-02-07 21:06:13

标签: python-2.7 firefox selenium selenium-webdriver

我正在开发一个应用程序,它通过使用芹菜的异步任务使用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)

每次请求截屏时都会启动此方法。

0 个答案:

没有答案