【问题标题】:Disable Google Analytics using javascript in Selenium在 Selenium 中使用 javascript 禁用 Google Analytics
【发布时间】:2013-12-24 11:09:31
【问题描述】:

我正在使用 selenium 来测试生产站点。测试活动与分析有关。

我可以在页面加载后通过 Selenium 禁用使用 JavaScript 的分析吗?我知道我可以通过 Selenium 执行 JS。问题是,如何禁用GA代码?

【问题讨论】:

  • 如果可能的话,另一种选择是在 GA 中为您的 Selenium 服务器的 IP 地址添加一个过滤器

标签: selenium google-analytics selenium-webdriver


【解决方案1】:

您可以尝试以下几个选项。一些取自这篇博文—— Exclude Selenium WebDriver traffic from Google Analytics.

选项 0:避免测试现场生产网站

理想情况下,自动化 Selenium UI 测试更适合针对某种测试环境进行测试,而不是在现场生产数据库中乱七八糟。由于现场生产现场只需要一些手动探索/烟雾测试。在这种情况下,在设置测试环境时,请使用不同的 Google Analytics 跟踪器,甚至避免使用 Google Analytics。

选项 1:禁用 JavaScript

由于 Google Analytics 跟踪是通过执行 JavaScript 代码的 sn-p 来完成的,因此在浏览器中禁用 JavaScript 就可以了。但这并不实际,因为这肯定会影响网站的功能。

选项2:设置用户代理并排除用户代理

在启动 WebDriver 时设置一个特殊的测试用户代理,然后在您的源代码中,使用 JavaScript 排除该用户代理。

例如,您的 GA 应该是:

if (user agent != your special testing user agent) {
    your GA code
}

选项 3:排除 IP/ISP

在您的 GA 的管理设置中设置它

选项 4:退出插件

启动您的 WebDriver 一个 GA 退出插件(仅适用于 ChromeDriver 和 FirefoxDriver)。 Google Analytics Opt out Add ons

选项 5:使用 JavaScript 的自定义变量(cookie)

请参阅Best Ways to Exclude Internal Traffic in Google Analytics 中的“使用 JavaScript 设置 Cookie”部分

选项 6:使用 BrowserMob Proxy 之类的代理

BrowserMob Proxy 允许操纵 HTTP 请求和响应、捕获 HTTP 内容以及将性能数据导出为 HAR 文件。它支持黑名单,可用作阻止发送到 Google Analytics 的数据的一种方式。

require 'browsermob/proxy'
require 'selenium-webdriver'

server = BrowserMob::Proxy::Server.new("./browsermob-proxy-2.1.4/bin/browsermob-proxy", :log => true)
server.start

proxy = server.create_proxy
proxy.blacklist("https?:\/\/www\.google-analytics\.com\/.*", 404)

profile = Selenium::WebDriver::Firefox::Profile.new
profile.proxy = proxy.selenium_proxy

driver = Selenium::WebDriver.for :firefox, :profile => profile

proxy.new_har "browsermob"
driver.get 'http://yizeng.me/'

har = proxy.har
har.entries.first.request.url
har.save_to "./browsermob.har"

proxy.close
driver.quit

选项 7:使用 Selenium JavaScriptexecutor 删除 GA 代码

你的想法,但不确定这是否可能,一旦加载了 GA 代码,它就会被执行,之后必须以某种方式使用 Selenium 删除代码?

【讨论】:

    【解决方案2】:

    借助 --host-resolver-rules 的力量

    let chrome = require("selenium-webdriver/chrome");
    const chromeOptions = new chrome.Options();//.headless();
    chromeOptions.addArguments('--host-resolver-rules=MAP www.google-analytics.com 127.0.0.1');
    var $browser = new $driver.Builder()
        .forBrowser("chrome")
        .setChromeOptions(chromeOptions)
    

    我是从 Can I automate Chrome request blocking using Selenium-webdriver for Ruby? 那里学到的,效果很好。

    【讨论】:

      【解决方案3】:

      有点晚了,但如果您使用的是视图引擎,这是一个低技术选项,例如Razor,就是在视图模型上有一个属性,比如IsTestEnvironment。在运行时根据配置或环境值设置它,然后在JavaScript 中对其进行测试,例如

      @if (!Model.IsTestEnvironment){
         // Google Analytics tracking code.
      }
      

      那么跟踪脚本将只包含在您选择的环境中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-14
        • 1970-01-01
        • 2012-01-17
        • 1970-01-01
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多