首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Selenium中的javascript禁用Google分析

使用Selenium中的javascript禁用Google分析
EN

Stack Overflow用户
提问于 2013-12-24 11:09:31
回答 3查看 4.3K关注 0票数 4

我正在使用selenium测试一个生产站点。测试活度与分析方法紧密相连。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-24 11:27:45

下面是几个你可以尝试的选择。一些是从这个博客帖子-- 从中排除Selenium WebDriver流量上拿来的。

选项0:避免测试实时生产站点

理想情况下,自动化Selenium测试更倾向于针对某种测试环境进行测试,而不是在实际生产数据库中乱糟糟地进行测试。作为现场生产现场,只需要一些手工的探索性/烟雾测试。在这种情况下,在设置测试环境时,使用不同的Google跟踪器,甚至避免使用Google。

Option1:禁用JavaScript

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

Option2:设置用户代理并排除用户代理

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

例如,您的GA应该是:

代码语言:javascript
运行
复制
if (user agent != your special testing user agent) {
    your GA code
}

Option3:不包括IP/ISP

将其设置在GA的管理设置中

Option4:选择退出插件

启动您的WebDriver,一个GA选择退出插件(只可能与ChromeDriver和FirefoxDriver)。选择退出加法

Option5:带有JavaScript的自定义变量(cookies)

参见谷歌分析中排除内部流量的最佳方法中的“设置带有谷歌分析中排除内部流量的最佳方法的Cookie”一节

Option6:使用像BrowserMob Proxy这样的代理

BrowserMob代理允许操作HTTP请求和响应,捕获HTTP,并将性能数据导出为HAR文件。它支持黑名单,这可以作为一种方式,以阻止数据发送到谷歌分析。

代码语言:javascript
运行
复制
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

Option7:使用Selenium JavaScriptexecutor删除GA代码

您的想法,但不确定这是否可能,一旦加载GA代码,它已被执行,使用Selenium删除到代码之后,必须在某种程度上?

票数 7
EN

Stack Overflow用户

发布于 2019-11-06 14:13:54

通过主机解析器规则的力量

代码语言:javascript
运行
复制
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)

我从我可以使用自动阻止Chrome请求吗?那里学到的,效果很好。

票数 1
EN

Stack Overflow用户

发布于 2014-10-25 23:44:38

有些晚了,但如果使用视图引擎(如Razor ),则技术含量较低的选项是在视图模型(如IsTestEnvironment )上拥有一个属性。根据配置或环境值在运行时设置此值,然后在JavaScript中对其进行测试。

代码语言:javascript
运行
复制
@if (!Model.IsTestEnvironment){
   // Google Analytics tracking code.
}

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20759860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档