Я хочу получать события gtm dataLayer из Google Analytics на своей странице и проверять их содержимое, например, после входа/выхода из системы. В тестах использую Selenide + java Пример кода без действий на странице
open("url");
List<Map<String, String>> result = new ArrayList<>();
List<Map<String, String>> dataLayerEventsList = Selenide.executeJavaScript("return window.dataLayer");
for (Map<String, String> map:dataLayerEventsList) {
if (map.containsKey("firstKey") && map.containsKey("secondKey"))
result.add(map);
}
return result;
Когда я не выполняю какие-либо действия на странице, я получаю события (просто открываю страницу и возвращаю window.dataLayer), но когда я выполняю какие-либо действия, FE нажимаю на элемент, setValue, а затем, когда я хочу получать события GA таким же образом У меня ошибка в методе Selenide.executeJavaScript("return window.dataLayer")
org.openqa.selenium.StaleElementReferenceException: stale element reference: stale element not found
Пример кода с действиями на странице
open("url");
$(By.className("login-form__select")).click();
SelenideElement login = $x("//div/../input").setValue("5645645");
SelenideElement password = $x("//div/../input").setValue("6666");
$x("//button[contains(@class,'login-form_999')]").click();
List<Map<String, String>> result = new ArrayList<>();
List<Map<String, String>> dataLayerEventsList = Selenide.executeJavaScript("return window.dataLayer");
for (Map<String, String> map:dataLayerEventsList) {
if (map.containsKey("firstKey") && map.containsKey("secondKey"))
result.add(map);
}
return result;
Как я могу решить эту проблему? Пожалуйста помоги
window.dataLayer
– это API, используемый для передачи данных и событий в Диспетчер тегов Google. Из GTM можно настроить триггеры, которые в конечном итоге будут запускать обращения Google Analytics. Не могли бы вы более четко указать, чего вы пытаетесь достичь, и цель этого? Это помогло бы дать лучший ответ - person Open SEO   schedule 18.04.2020