Javascript 角度应用中的事件跟踪测试

Javascript 角度应用中的事件跟踪测试,javascript,angularjs,protractor,angularjs-e2e,event-tracking,Javascript,Angularjs,Protractor,Angularjs E2e,Event Tracking,TLDR: 我在寻找 e2e(量角器)通过外部脚本测试角度应用程序中的Http请求的一种方法,无需模拟即可获得传递给Http请求的真实值 e2e在角度应用程序中测试事件时,在新创建的选项卡/窗口中停止页面执行的一种方法 到目前为止,我找不到任何方法来做这些事情,我搜索了很多。。我希望我不要重复任何其他问题。。但我想我几乎阅读了所有与我想做的事情相关的问题。。 抱歉,没有打开两个问题,但到目前为止,这些都是跟踪相关内容,也可以在一个问题中发布;) 下面是一个场景: 我有一个应用程序,可以跟踪点击

TLDR

我在寻找

  • e2e(量角器)通过外部脚本测试角度应用程序中的Http请求的一种方法,无需模拟即可获得传递给Http请求的真实值
  • e2e在角度应用程序中测试事件时,在新创建的选项卡/窗口中停止页面执行的一种方法

  • 到目前为止,我找不到任何方法来做这些事情,我搜索了很多。。我希望我不要重复任何其他问题。。但我想我几乎阅读了所有与我想做的事情相关的问题。。 抱歉,没有打开两个问题,但到目前为止,这些都是跟踪相关内容,也可以在一个问题中发布;)

    下面是一个场景:

    我有一个应用程序,可以跟踪点击和视图。 他们以“多角度”的原则进行跟踪,我们作为创作者、提供商(等于我们为其提供服务的客户)和发布者,将应用程序实现到他们的每个跟踪中

    除了这种“多角度跟踪”之外,还有不同的跟踪方式,我们称之为“多用途跟踪”

    • 跟踪像素
    • 跟踪回调
    • 点击URL

    用跟踪像素进行跟踪 关于这件事没什么好说的。每个“角度”可以提供跟踪像素,当触发EVEN时,这些像素绑定到视图中的img标记。测试中无问题,包括单元和e2e


    使用回调函数跟踪 每个“角度”都可以提供像谷歌分析这样的脚本,这些脚本在事件触发时执行。单元测试这些都不是问题。 说到e2e测试,我希望能够做到以下几点:

    • 请求一页
      • 视图跟踪器已初始化
      • 执行ga.send
      • 检查所做的http请求(这是问题开始的地方)
      • 测试请求url中的属性是否正常
    在进行了大量研究之后,我找不到一种方法来列出应用程序在加载和跟踪视图后发出的http请求。 有很多方法可以模拟请求,但这不是我需要的。我需要提出真正的要求,然后进行测试


    点击URL 每个“角度”都可以提供位于最终目标前面的点击URL。 当触发重定向到应用程序外的单击时,将使用此Url打开一个新窗口/选项卡。和回调一样,单元测试根本没有问题。。但e2e部分在这里遇到了障碍。 这就是我想做的

    • 请求一页
      • 点击
      • 切换到新的窗把手
      • 使浏览器停止执行
      • 检查页面Url
      • 使浏览器继续运行
      • 测试最终的Url
    这是我迄今为止尝试过的,但不起作用:

    描述('CTR',函数(){ beforeach(函数(){ el=element.all(by.repeater('result in ttip.event.result_set.result')。行(0)); el.all(by.css('.hs工具提示bet param'))。单击(); browser.ignoreSynchronization=true; }); 它('应包含ctr字符串',函数(完成){ browser.getAllWindowHandles().then(函数(句柄){ var newWindowHandle=句柄[1]; browser.switchTo().window(newWindowHandle).then(function()){ browser.driver.executeScript('window.stop()'); browser.driver.actions().sendKeys(dragrator.Key.ENTER).perform(); //浏览器睡眠(1000); expect(browser.driver.getCurrentUrl()).toContain(config.prefix); expect(browser.driver.getCurrentUrl()).toContain('https://ad.doubleclick.net/ddm/'); expect(browser.driver.getCurrentUrl()).toContain('dc_lat'); expect(browser.driver.getCurrentUrl()).toContain('dc\rdid'); expect(browser.driver.getCurrentUrl()).toContain('dc_rdtag_for_child_directed_treatmentid'); }).然后(函数(){ browser.close(); }).然后(函数(){ browser.switchTo().window(句柄[0]); 完成(); }); }); }); }); 当我在我的机器上运行这个测试时,我可以看到url从点击到目标url的变化。但测试似乎是在加载最终目标时执行的,这太晚了。测试返回最终目标,测试中提到的属性在此不再可用

    所以这两件事对我来说仍然是不可测试的,但我需要以任何方式测试它们,因为这两件事正常工作是至关重要的。 您可能会说,我不应该关心应用程序之外发生的事情,但在我的情况下,发布者和提供者大多没有能力。。我需要向他们保证一切都像他们想象的那样。 您也可能会说,集成这么多跟踪逻辑毫无意义,但这不是我的决定

    很抱歉发了这么长的帖子,谢谢你的帮助



    我设法让clickthrough测试在特定的clickthrough Url上运行。看起来这个Url需要更长的时间来解析重定向,所以量角器可以在Url更改之前抓取它。。。但一定有办法控制这一切。。否则,这仅仅是基于时间和运气,在这方面是不一致的:/

    对于那些感兴趣的人: 我重新考虑了我的方法,最后加入了一个调试模式,该模式禁用所有传出URL并将它们打印到控制台中。 然后,可以通过单元测试和e2e测试对其进行测试

    在点击URL指向的“重定向”页面上遇到了许多问题(发布者禁用了点击URL,因为URL被破坏,活动管理不当等等),这似乎是最明智的测试方法

    不过,如果发布者提供的url被破坏,我的应用程序将无法正确重定向。但我决定,虽然我会