繁体   English   中英

量角器:在Iframe中测试非角色应用程序

[英]Protractor: Testing non-Angular App in an Iframe

我正在使用量角器版本3.3.0为我的非角度应用程序编写e2e测试。 我的应用程序在iframe中加载了另一个非Angular App,我正在尝试使用Protractor将测试写入iframed-in。

我尝试了上面这个,使用browser.driver.ignoreSynchronization = true:

1。

 var EC = protractor.ExpectedConditions;
 var button = $("div[automation-id='homescreen']")
 var isClickable = EC.elementToBeClickable(button);

 browser.wait(isClickable, 50000).then(function(){
      browser.driver.sleep(500);
      button.click();
 }) 

收到错误“失败:未知错误:元素在点(326,624)处无法点击...”

2。

var loc = by.id('myFrame');
el = browser.driver.findElement(loc)
browser.driver.switchTo().frame(el);

收到错误“失败:没有这样的元素:无法找到元素:{”方法“:”css选择器“,”选择器“:”* [id =“myFrame”]“}”

甚至认为el被成功检索..

3。

browser.driver.switchTo().frame(0);

尝试索引1并收到“失败:没有这样的框架..”错误

4。

browser.driver.getAllWindowHandles()

只收到一个窗口......

如果这是页面上唯一的iframe ,则选项3看起来很有希望。 在切换到iframe之前,我只是等待iframe出现:

// wait for the frame to be present
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(element(by.tagName("iframe"))), 5000);

// switch to frame
browser.driver.switchTo().frame(0);

切换到iframe

对于非角度页面

。browser.driver.switchTo()defaultContent();

browser.driver.switchTo()。frame(“Frame id或classname”);

请尝试以下代码,iframe不属于角度应用

browser.ignoreSynchronization = true;
return browser.switchTo().frame(iFrameEle.getWebElement())
            .then(function(){
                // in the iframe..

            })
            .then(function(){
                // restore sync for angular
                browser.ignoreSynchronization = false;
                return browser.switchTo().defaultContent();
            });
var elem = element(by.xpath('.//div[contains(@id,\'contents\') and contains(@id,\'cke\')]/iframe'));
        browser.sleep(3000);
        elem.click();
        browser.switchTo().frame(elem.getWebElement());
        browser.sleep(3000);
        element(by.tagName('body')).sendKeys('test'); // entering text on iframe 
        browser.switchTo().defaultContent();
        browser.sleep(3000);

我在我的应用程序和它的工作中使用了上面的代码。 希望它能帮到你。 我首先点击iframe,然后将焦点转移到它。

注意:当我给予睡眠时间时,只有它的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM