【问题标题】:Is there a way to prevent Walk-Me from loading, when running Protractor tests?在运行 Protractor 测试时,有没有办法阻止 Walk-Me 加载?
【发布时间】:2020-06-24 20:59:16
【问题描述】:

我正在尝试使用 ProtractorJasmine 运行一些端到端 (E2E) 测试。我使用 Chrome 作为我喜欢的浏览器;当我以全肉模式(即非无头)运行测试时,测试都成功运行。但是,当我在无头模式下运行测试时,我不断收到错误消息,提示我尝试单击的元素被另一个元素拦截。似乎阻碍的工具是 WalkMe https://www.walkme.com/。我已经使用以下代码来确定我想要的元素何时存在、可见、启用和可点击,但这似乎没有帮助。

let isDisplayed;
let isEnabled;
let isPresent;
let EC = protractor.ExpectedConditions;

isDisplayed = await element(by.id(<locator-of-type-id>)).isDisplayed();
isEnabled = await element(by.id(<locator-of-type-id>)).isEnabled();
isPresent = await element(by.id(<locator-of-type-id>)).isPresent();
let elm = await element(by.id(<locator-of-type-id>));

await browser.wait(EC.elementToBeClickable(elm), 5000);

提前感谢您的时间和精力。

【问题讨论】:

    标签: jasmine protractor intercept


    【解决方案1】:

    是的!你无法想象我在使用 WalkMe 时有多么挣扎……这是解决方案

    // disable walkme for the session
    await browser.executeScript(`
        if (!!window.WalkMeAPI) {
            window._walkMe.removeWalkMe();
            (function() {
                try {
                    var envName = "none";
                    document.cookie = "walkme_custom_user_settings_env=" + envName + ";path=/;";
                    window.localStorage.setItem("walkme_custom_user_settings_env", envName);
                } catch(e) {
                    alert(e);
                }
            })();
        }
    `);
    

    所以基本上你是通过向浏览器的控制台注入代码来禁用集成

    虽然我上次使用它已经有一段时间了,所以希望他们的 API 没有太大变化

    【讨论】:

    • 我会为此尝试一下,因为您花时间帮助我。但是,在安装 protractor-jasmine2-screenshot-reporter 之后,我能够确定真正的问题。是的,WalkMe 正在路上。但原因是浏览器没有遵守“最大化”浏览器/窗口的代码。根本原因是当使用无头无头的 chome 运行量角器时,该代码存在一个真正的错误。因此,在使用代码将窗口设置为特定大小之后,WalkMe 就没有问题了。但是,我仍然对您的实施感兴趣。所以,谢谢!
    • 是的...看,这个会帮助你永远摆脱 walkme,所以即使它现在不在你的路上,最好不要依赖它,因为它的行为不可预测
    【解决方案2】:

    阻止 WalkMe 干扰您的另一种快速方法是模拟您的浏览器请求到 url /walkme/i,或您的 WalkMe 脚本发送 API 的任何 url(您可以在浏览器 devtool 网络选项卡中查看)。

    我自己在 Cypress 中的快速示例 https://liunate.medium.com/disable-walkme-to-avoid-flaky-cypress-end-to-end-tests-aaf73e213aed 我认为 Protractor 或其他 e2e 测试框架应该能够拦截相同的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 2022-10-13
      • 1970-01-01
      相关资源
      最近更新 更多