如何对使用 Selenium WebDriver 触发的每个事件自动测试谷歌分析

Posted

技术标签:

【中文标题】如何对使用 Selenium WebDriver 触发的每个事件自动测试谷歌分析【英文标题】:How to automate test google analytics on every event fired using Selenium WebDriver 【发布时间】:2014-09-16 23:40:21 【问题描述】:

我正在使用 Selenium WebDriver java 绑定进行 Google Analytics 自动化测试。我们的网站在网站的重要元素上设置了 Google Analytics 跟踪事件。我需要验证在单击某个被测元素时,Google Analytic 事件实际上已被触发。

我正在 FireFox 上对其进行测试。当我点击 F12 时,我可以在控制台中看到在每个元素点击事件上都会触发 Google Analytics,并带有消息 GET http://www.google-analytics.com/__utm.gif

    SampleCode :-
      WebDriver wd = new FirefoxDriver();
      wd.get("http://www.dummyExample.com/");
      wd.findElement(By.linkText("Document Referece")).click();
      wd.findElement(By.id("Ex2vc2")).click();

我怎样才能完成这项任务?我用谷歌搜索了它,但找不到好的答案。如果有人可以帮助我提供一些参考资料或示例代码,我将非常感激。

【问题讨论】:

这只是测试 Google 的 Analytics javascript(Google 已经这样做了!)。我不明白这是如何实现任何目标的。 @Arran :我想在日志中捕获哪个点击事件具有谷歌分析。 【参考方案1】:
    测试 GA 的好方法是使用 javascript。示例显示了使用 phantomjs 的测试,因为使用 js 的东西更快,但我认为您也可以使用 FF 或其他浏览器。 作者还添加了带有代码的 github 链接以进行尝试。测试的主要方法很酷,但可能需要一些时间来为此创建代码并在以后支持它。

http://viget.com/extend/testing-google-analytics-with-phantomjs

    第二种方法是使用HttpProxy。 AFAIK 有工具 - BrowserMobProxy。您将能够嗅探测试网站上的所有请求,但它们是 HAR 格式的。所以算法很简单,启用代理、打开网站、执行操作、嗅探请求、解析它们并断言值。

    更改端点并保存所有请求以断言它们。因此,分析通常会将请求发送到相同的 url,例如“http://google.com/analytics”或其他。因此,您可以在测试网络服务器时更改此行为。 F.e.使用 localhost 地址将此 url 添加到 /etc/hosts。然后webserver上所有发送到GA域的请求都会被webserver接收。

这将需要额外的编程。但这是测试恕我直言的最干净的方法。

【讨论】:

【参考方案2】:

可以使用 Java 脚本命令来捕获在浏览器中触发的事件,并且相同的脚本将捕获不同浏览器的事件(针对 chrome 和 Firefox 测试)。 基本上和我们在控制台窗口中捕获事件的方式是一样的

**window.dataLayer[0]**.event

只需将此值存储在某个变量中并与预期事件进行比较,它将给出第一个被触发的事件并移动下一个事件只需使用

((JavascriptExecutor) driver).executeScript("window.dataLayer.shift() ");

它将去捕获下一个事件。

【讨论】:

【参考方案3】:

我建议使用Charles Proxycharles 来捕获和验证分析调用,使用它的web interface / API。例如,如果您想检查号召性用语是否触发了正确的事件,您可以:

    使用 Charles API 开始录制 使用 Selenium 点击按钮 使用 Charles API 停止录制 使用 Charles API 以 JSON 格式检索记录的会话 检查会话是否符合预期的分析接受标准

可以在here找到示例视频。

【讨论】:

【参考方案4】:

就自动化而言,您无法通过按 F12 从控制台选项卡捕获输出。

您需要通过自动化脚本触发点击功能,然后您可以查看谷歌分析工具中触发的事件列表。在此 URL 中注册 http://www.google.com/analytics/

在此处设置您的 URL 和域。然后在对触发的事件执行测试后,使用分析工具检查输出。

【讨论】:

此答案不起作用,因为事件不会立即出现在 Google Analytics(分析)中。此外,这不是一个完全自动化的过程,因为它需要手动检查 GA。 这个答案有效。简而言之,您可以使用活动 URL 运行自动化测试。您在 Google 分析中有一个称为报告的选项。对于自动化脚本发送的点击,您可以安排报告每天到达您的邮箱。我同意一件事。没有实时报告,但可以24小时内拿到报告,还不错。

以上是关于如何对使用 Selenium WebDriver 触发的每个事件自动测试谷歌分析的主要内容,如果未能解决你的问题,请参考以下文章

Selenium Webdriver:如何使用 Python 下载 PDF 文件?

Python Selenium.WebDriver 浏览器启动参数设置『Edge如何使用启动参数』

如何向使用 Selenium Webdriver 处理的 HTTP 请求添加标头或参数?

如何使用 Java 在 selenium webdriver 中打开新选项卡,或者如何使用 selenium webdriver 使用动作类在 selenium 中按 ctrl + T [重复]

使用ImageMagick和Selenium Webdriver进行自动化视觉测试

如何使用selenium webdriver来判断一个网页加载完毕