Запланируйте задачу на Selenium Webdriver со множеством страниц/вкладок ⇐ JAVA
Запланируйте задачу на Selenium Webdriver со множеством страниц/вкладок
У меня есть приложение со следующим поведением
[*]создать экземпляр веб-драйвера (одиночный класс) [*]откройте домашнюю страницу, где выполните итерацию строки таблицы (представьте 50 строк) и для каждой строки добавьте новую вкладку, используя ((JavascriptExecutor) driver).executeScript("window.open('" + link + "', '_blank');"); . [*]Для хранения (в памяти) всех окон я использую HashMap, где ключ — это что-то сгенерированное мной, а значение > — это уникальная строковая ссылка на окно, созданная селеном (driver.getWindowHandle())
Теперь мне нужно проверить/получить доступ к каждой открытой вкладке (50 в этом примере), чтобы затем проверить, есть ли у меня новые данные или нет, и на данный момент они у меня есть
[*]
Исполнитель ScheduledExecutorService для периодического выполнения метода, который перебирает все окна в HashMap
[*]
Метод использует driver.switchTo().window(tabID) для переключения на соответствующую вкладку и доступа к содержимому.
Но у меня возникли проблемы, поскольку у меня есть только один экземпляр драйвера и возникают некоторые конфликты при доступе к элементам. Хорошее ли решение, которое я выбрал, или есть лучшая альтернатива, позволяющая ускорить процесс при каждом периодическом выполнении?
Могу ли я получить доступ к нескольким вкладкам параллельно, используя selenium switchTo() или только один поток для всех вкладок?
У меня есть приложение со следующим поведением
[*]создать экземпляр веб-драйвера (одиночный класс) [*]откройте домашнюю страницу, где выполните итерацию строки таблицы (представьте 50 строк) и для каждой строки добавьте новую вкладку, используя ((JavascriptExecutor) driver).executeScript("window.open('" + link + "', '_blank');"); . [*]Для хранения (в памяти) всех окон я использую HashMap, где ключ — это что-то сгенерированное мной, а значение > — это уникальная строковая ссылка на окно, созданная селеном (driver.getWindowHandle())
Теперь мне нужно проверить/получить доступ к каждой открытой вкладке (50 в этом примере), чтобы затем проверить, есть ли у меня новые данные или нет, и на данный момент они у меня есть
[*]
Исполнитель ScheduledExecutorService для периодического выполнения метода, который перебирает все окна в HashMap
[*]
Метод использует driver.switchTo().window(tabID) для переключения на соответствующую вкладку и доступа к содержимому.
Но у меня возникли проблемы, поскольку у меня есть только один экземпляр драйвера и возникают некоторые конфликты при доступе к элементам. Хорошее ли решение, которое я выбрал, или есть лучшая альтернатива, позволяющая ускорить процесс при каждом периодическом выполнении?
Могу ли я получить доступ к нескольким вкладкам параллельно, используя selenium switchTo() или только один поток для всех вкладок?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение