运行 TestCafe 测试时阻止一些 GTM 标签 - 使用数据层?
Blocking some GTM tags when running TestCafe tests - use the dataLayer?
想知道阻止 GTM 代码触发的最佳方法。我找到了 https://rbardini.com/automating-gtm-data-layer-tests/ 哪些标签是关于获取 dataLayer 变量并在断言中比较它的,但是当您想在每个页面上写入 dataLayer 时,这看起来像是一种笨拙的方法。
例如提示:
const getDataLayer = ClientFunction(() => window.dataLayer)
我们使用 Google 标签管理器在我们的网站上自动加载标签。不幸的是,其中之一是 CloudIQ(来自 PayPal),它会弹出一个 iframe 覆盖层,提供时事通讯注册或保存购物篮的功能。在我们的 GTM 设置中,该标签的触发器只是 'All Pages'。当它弹出时,它通常会阻止我们的测试,因为无法单击选择器。
我们的页面流经在线商店的多个页面,例如:
- 访问主页,单击产品 - 导航到产品页面
- 点击产品页面上的一些选项,然后添加到购物车
- 完成结帐流程
因此可能由于点击操作访问了很多页面。
GTM 可以定义变量,然后在标记的异常中使用它们,因此我可以通过 a/ 全局变量或 b/ dataLayer 变量来防止触发 CloudIQ 标记。但是,我看不出如何优雅地为我在测试期间访问的每个页面设置这些设置,这样当 GTM 检查变量以阻止标签被加载时它们就会存在。 Fixture.beforeEach
是不对的,因为每个固定装置它只会 运行 一次,并且一旦发生页面导航,它在页面范围内设置的任何数据都会丢失。
有没有人有过这种事情的经验?
(替代方案当然是检测覆盖,使用 switchToIframe 切换到 CloudIQ iframe 并手动关闭它,但它弹出时非常不稳定,我更愿意在测试期间完全禁用标签,因为它是不是我们需要测试的我们网站的核心功能。)
一种方法是为您的测试套件设置一个自定义用户代理字符串,创建一个自定义 javascript 变量 returns navigator.useragent 的值,然后触发异常阻止标签。
或该主题的任何变体 - 设置 cookie,使用 url 参数,或者如果您的测试套件允许注入全局 js 变量,并检查异常触发器中的值。
无需避免在客户端触发事件。只需模拟 Google Tag Manager 和 CloudIQ 的服务路由,并为它们模拟正确的响应。
想知道阻止 GTM 代码触发的最佳方法。我找到了 https://rbardini.com/automating-gtm-data-layer-tests/ 哪些标签是关于获取 dataLayer 变量并在断言中比较它的,但是当您想在每个页面上写入 dataLayer 时,这看起来像是一种笨拙的方法。
例如提示:
const getDataLayer = ClientFunction(() => window.dataLayer)
我们使用 Google 标签管理器在我们的网站上自动加载标签。不幸的是,其中之一是 CloudIQ(来自 PayPal),它会弹出一个 iframe 覆盖层,提供时事通讯注册或保存购物篮的功能。在我们的 GTM 设置中,该标签的触发器只是 'All Pages'。当它弹出时,它通常会阻止我们的测试,因为无法单击选择器。
我们的页面流经在线商店的多个页面,例如:
- 访问主页,单击产品 - 导航到产品页面
- 点击产品页面上的一些选项,然后添加到购物车
- 完成结帐流程
因此可能由于点击操作访问了很多页面。
GTM 可以定义变量,然后在标记的异常中使用它们,因此我可以通过 a/ 全局变量或 b/ dataLayer 变量来防止触发 CloudIQ 标记。但是,我看不出如何优雅地为我在测试期间访问的每个页面设置这些设置,这样当 GTM 检查变量以阻止标签被加载时它们就会存在。 Fixture.beforeEach
是不对的,因为每个固定装置它只会 运行 一次,并且一旦发生页面导航,它在页面范围内设置的任何数据都会丢失。
有没有人有过这种事情的经验?
(替代方案当然是检测覆盖,使用 switchToIframe 切换到 CloudIQ iframe 并手动关闭它,但它弹出时非常不稳定,我更愿意在测试期间完全禁用标签,因为它是不是我们需要测试的我们网站的核心功能。)
一种方法是为您的测试套件设置一个自定义用户代理字符串,创建一个自定义 javascript 变量 returns navigator.useragent 的值,然后触发异常阻止标签。
或该主题的任何变体 - 设置 cookie,使用 url 参数,或者如果您的测试套件允许注入全局 js 变量,并检查异常触发器中的值。
无需避免在客户端触发事件。只需模拟 Google Tag Manager 和 CloudIQ 的服务路由,并为它们模拟正确的响应。