Protractor 如果我在firefox:Digrator中运行测试用例,控件不会切换到iframe

Protractor 如果我在firefox:Digrator中运行测试用例,控件不会切换到iframe,protractor,Protractor,我正在尝试在firefox中运行我的脚本(量角器)。 页面上有一个iframe,我需要单击该iframe中的链接。单击会重定向到新选项卡,我也需要切换到该选项卡。 但按代码,单击不起作用 我试图把一些等待,直到链接是可点击的,但它不工作 var announcementsGadget = gadget.getAnnouncementGadget(); expect(announcementsGadget.isDisplayed()).toBe(true);

我正在尝试在firefox中运行我的脚本(
量角器
)。 页面上有一个iframe,我需要单击该iframe中的链接。单击会重定向到新选项卡,我也需要切换到该选项卡。 但按代码,单击不起作用

我试图把一些等待,直到链接是可点击的,但它不工作

        var announcementsGadget = gadget.getAnnouncementGadget();
        expect(announcementsGadget.isDisplayed()).toBe(true);

        var iframe = gadget.getGadgetbyiFrame(announcementsGadget);
        browser.switchTo().frame(iframe.getWebElement());

        var allAnnouncements = gadget.getAllAnnouncementGadget();
        allAnnouncements.click().then(function() {

            browser.getAllWindowHandles().then(function(handles) {
                browser.sleep(4000)
                browser.switchTo().window(handles[1]).then(function() {
                    expect(browser.getCurrentUrl()).toEqual');
                    browser.sleep(sleep_interval);
                    browser.close();
                });

                browser.switchTo().window(handles[0]);
                browser.sleep(5000);
            });
        });

它应该点击
allannounces
链接并切换到新选项卡

如果有多个iframe,您可以使用:

 browser.switchTo().frame(0);
切换到第一个iframe

和使用:

browser.switchTo().frame(1);
切换到第二个iframe

如果html中有iframe,也可以使用
浏览器.switchTo().frame(0)
切换到该iframe

然后,你可以点击你想要的链接。例如:
driver.findElement(按.tagName('a'))。单击()

之后,您必须通过以下方式切换到该iframe:

现在浏览器上的新标签页已经打开,你们可以切换到新标签页,做你们想做的事


您好,谢谢您的回复,实际上上面的代码在chrome中工作,问题出在Firefox上。它在Firefox浏览器上不起作用,我用iframe进行了测试,它在两种浏览器上都起作用。您得到了什么错误?在我的例子中,页面上有多个iframe,因此我正在传递所需iframe的引用,即var iframe=gadget.getGadgetbyiFrame(announcementsGadget);browser.switchTo().frame(iframe.getWebElement());但我无法执行所有通知。单击()将打开一个新选项卡,并面临错误消息:失败:第1行第2列堆栈中缺少字段
handle
:InvalidArgumentError:第1行第2列中缺少字段
handle
From:Task:WebDriver.switchTo().window(未定义)使用browser.switchTo().window时(句柄[1])。然后(函数(){}量角器的工作空间将切换到窗口(句柄[1])。在窗口句柄[1]中,您不能与窗口句柄[1]外部交互,量角器只需在窗口句柄[1]中工作。因此,如果您想从窗口(句柄[1])中切换,则必须在。然后(函数(){}),browser.switchTo().window(句柄)[1] )。然后(function(){}。在此之后,您可以切换到其他窗口句柄。我可以知道-1的原因以及为什么不清楚。我试图修复此问题,但没有发生。
browser.switchTo().defaultContent();