当前位置: 首页 > 面试题库 >

单击后打开非角度页面

史和泰
2023-03-14
问题内容

我正在尝试实施以下测试方案:

  • 单击页面上的徽标
  • 断言有一个新的浏览器窗口打开(Chrome中的选项卡)并检查当前URL

问题在于,在新浏览器窗口中打开的页面 是非角度页面, 而我正在执行单击操作的 主页角度页面

这是我的第一次尝试:

it("should show logo", function () {
    var logo = scope.page.logo;
    expect(logo.isDisplayed()).toEqual(true);

    // opens a new page on click
    logo.click().then(function () {
        browser.getAllWindowHandles().then(function (handles) {
            browser.switchTo().window(handles[1]).then(function () {
                expect(browser.getCurrentUrl()).toEqual('http://myurl.com/');
            });

            // switch back to the main window
            browser.switchTo().window(handles[0]);
        });
    });
});

失败与:

错误:等待量角器与页面同步时出错:“在窗口中找不到角度”

这是可以理解的。

我的第二次尝试是使用ignoreSynchronization布尔标志:

browser.ignoreSynchronization = true;
logo.click().then(function () {
    browser.getAllWindowHandles().then(function (handles) {
        browser.switchTo().window(handles[1]).then(function () {
            expect(browser.getCurrentUrl()).toEqual('http://myurl.com/');
        });

        // switch back to the main window
        browser.switchTo().window(handles[0]);
    });

实际上,这使该特定测试通过而没有任何错误,但是它影响此操作之后执行的每个测试,因为它browser是一个全局对象,并且在测试之间共享-
量角器不再与页面上的角度同步,从而导致各种错误。

我应该如何进行测试?

解决方法是,我可以毫无问题地将restartBrowserBetweenTests设置更改为,true并更改ignoreSynchronization值-但这会大大降低测试速度。


问题答案:

ignoreSynchronization验证完成后,您可以将其设置为false。但是,请注意,ignoreSynchronization是同步的,而其他所有东西(click
/ get /
etc)都是异步的,因此您需要注意这一点。可能最安全的方法是在beforeEach中将其设置为true,在afterEach中将其设置为false,然后在该测试中测试单个徽标单击。



 类似资料:
  • 问题内容: 角度1.2: 我的功能状态不正确? 单击后,我想要状态。 问题答案: 和的执行顺序不明确,因为它们没有定义明确的优先级。相反,你应该使用或上,以确保您获得的正确值 模型 变量。 在您的情况下,这应该可以工作:

  • 问题内容: 我有一个Java 7程序(使用WebStart技术,仅适用于Windows 7/8计算机)。 我需要添加一个函数,以便我的程序单击具有已知URL(https)的页面上的按钮。 有人建议使用WebKit SWT,但我去了他们的网站,他们说该项目已终止。(http://www.genuitec.com/about/labs.html) 其他人说,JxBrowser是唯一的选择,但是看起来它

  • 问题内容: 我在Angular UI Grid中有一个项目列表。当我单击一行时,我想转到另一个页面。(换句话说,网格中的每一行都是一个链接。) 我想这肯定是一个非常普遍的愿望,尽管我还没有真正看到过有关如何实现的文档。什么是完成此任务的好方法? 问题答案: 我自己想出了答案。这是我的控制器(ES6): 这是我的行模板(Jade): 另外,这是我的样式表(SCSS)。我认为突出显示光标下的行并使用光

  • 问题内容: 我有两个(或更多)链接。例如:http : //google.com和http://yahoo.com。 当我单击单个链接时,如何使它们 都 打开? 例如,一个名为“单击此处”的链接,单击该链接将打开两个不同的空白窗口。 问题答案: HTML: JS: 您还应该知道window.open有时会被弹出窗口阻止程序和/或广告过滤器阻止。 Paul的补充:这种方法还依赖于启用JavaScri

  • 我有两个角材料图标在一个组件,每一个菜单-例如菜单1和菜单2。当我单击menu1图标时,它将打开menu1列表。然后,当我单击menu2图标时,我需要关闭menu1列表并打开menu2。但现在我需要做两次点击来做这个activity。第一次单击关闭menu1,第二次单击打开Menu2。如何使用实现第二个菜单的一键打开? 菜单1 html 菜单2 html 例示有角材料样品。我的问题是如何打开和关闭

  • 我想我的问题以前已经回答过很多次了,但是我找不到确切的我的案例。 我有一个垂直菜单和子菜单,我想显示子菜单,只有当父菜单被点击(不是悬停),一次只显示一个子菜单,在点击菜单的某个地方后,我想要子菜单消失。 这就是我现在得到的--它基于现在的悬停。我试着把a:hover改成类似a:active的东西,但它并不能很好地工作(我在CSS方面不是很好)。 有谁知道吗?