gpt4 book ai didi

java - 当我尝试使用 Selenide 获取 window.dataLayer 时,出现 StaleElementReferenceException

转载 作者:行者123 更新时间:2023-12-01 17:21:01 25 4
gpt4 key购买 nike

我想从我的页面上的 Google Analytics 获取 gtm dataLayer 事件,并在登录/注销后检查其内容。我在测试中使用 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),但是当我执行某些操作时,F.E. 单击元素,然后当我想要获取 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;

如何解决这个问题?请帮忙

最佳答案

在找到您要单击的元素之前,请先重新查找该元素。

Stale Exception 基本上意味着你的元素无法被定位,因为它不在 DOM 中,其背后的原因是 For Ex。您找到了一个元素,假设您刷新了页面或导航到其他页面,之后您尝试使用在执行操作之前找到的该元素,那么将抛出 Stale Element 异常。

希望这有帮助。

关于java - 当我尝试使用 Selenide 获取 window.dataLayer 时,出现 StaleElementReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61289299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com