我有多个网站,我想不时检查更新。为此,我使用带有chrome实例的selenide(硒包装),因此最后我将在单独的线程中打开多个浏览器,并保持打开状态,直到每个站点/线程都满足条件为止。为了实现这一点,我正在考虑像这样的东西
AtomicReference<Scraper> scraper = null;
Observable.interval(0,3, TimeUnit.SECONDS, Schedulers.io())
.doOnSubscribe( tick -> scraper.set(new Scraper("https://..")))
.takeWhile(tick -> !scraper.get().isLive())
.doOnEach(tick ->
scraper.get().readFromSite();
)
.doOnError(err -> System.out.println("Error retrieving messages"))
.subscribe();
Scraper打开浏览器并立即在其构造函数中登录。我不知何故需要重用已打开的绑定到线程的浏览器实例,并不时在其上运行readFromSite方法。我发现Observable.generate可能有用,因为它具有可调用的参数以提供初始状态,但不知道如何将其与interval合并或是否适合我的目标。