使用 Selenium webdriver 异步重新加载页面

Reload page asynchronously using Selenium webdriver

我正在使用最新的 Firefox webdriver 和 selenium。我正在尝试制作一个库存检查器机器人,它会定期刷新一堆页面。因为我有很多链接,为了节省内存,我实现了每个页面在不同的firefox标签页打开。

为了刷新一个标签,我需要切换到它然后刷新当前页面。但是,driver.refresh() 刷新某些网站需要大约 10 秒,而且由于我无法同时刷新任何其他页面,这大大降低了我的工作量。

driver = webdriver.Firefox()

def refresh_page(self):
    logging.info('Starting to refresh page %s', self.url)
    self.switch_to()
    time.sleep(self.delay)
    # driver.find_element_by_tag_name('body').send_keys(Keys.F5)
    driver.refresh()
    logging.info('Finished refreshing page')

def switch_to(self):
    driver.switch_to.window(self.tab)

有什么方法可以异步刷新页面吗?看起来其他人 运行 遇到了同样的问题:Asynchronous refresh with Selenium + Python.

出于某种原因,发送 F5 键无效。我也试过调用 driver.get(self.url) 没有运气(仍然同步)。另一种解决方案可能是找到一种方法来一次同步重新加载所有选项卡,但我也没有找到解决方案。

我想我通过执行自定义脚本设法找到了解决方法:

driver = webdriver.Firefox()

def refresh_page(self):
    logging.info('Starting to refresh page %s', self.url)
    self.switch_to()
    time.sleep(self.delay)
    driver.execute_script("location.reload()")
    logging.info('Finished refreshing page')

def switch_to(self):
    driver.switch_to.window(self.tab)

但如果有人有任何其他建议,请告诉我。另一个有同样问题的人(link 有问题)说这并不总是有效,所以我们必须拭目以待