Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用量角器检测Iframe是否有角度_Javascript_Angularjs_Iframe_Protractor - Fatal编程技术网

Javascript 用量角器检测Iframe是否有角度

Javascript 用量角器检测Iframe是否有角度,javascript,angularjs,iframe,protractor,Javascript,Angularjs,Iframe,Protractor,我有以下不寻常的用例。我在下面详述 1) 我在一个有角度的页面上&我在页面上做一些动作[它加载一个无角度的iFrame] 2) 我切换到非角度iframe&与一些屏幕交互 3) 最终,这会导致重定向发生在有角度的页面上 当我在步骤2中使用量角器时,我必须将它与flag browser.ignoreSynchronization一起使用,因为它是非角度的。我需要一种方法来检查我正在交互的表单是否有角度,以帮助从步骤2)到步骤3)的平滑过渡 我知道你可以在页面上使用 browser.executeA

我有以下不寻常的用例。我在下面详述

1) 我在一个有角度的页面上&我在页面上做一些动作[它加载一个无角度的iFrame]

2) 我切换到非角度iframe&与一些屏幕交互

3) 最终,这会导致重定向发生在有角度的页面上

当我在步骤2中使用量角器时,我必须将它与flag browser.ignoreSynchronization一起使用,因为它是非角度的。我需要一种方法来检查我正在交互的表单是否有角度,以帮助从步骤2)到步骤3)的平滑过渡

我知道你可以在页面上使用

browser.executeAsyncScript或browser.executeScript与

!!window.angular(角度v1)

!!window.getAllAngularTestabilities(角度v2)


但这在本用例中不起作用,因为无论您是否与非角度iframe交互,所有这些都将返回true。对于这样的用例,有人有其他的建议吗?非常感谢。

当我需要自动化iframe时,通常会执行以下操作

//1)当您知道iframe在那里时
browser.switchTo().frame(0);
//2 a)您不需要禁用wait for anguler,只需使用vanila webdriver,它将在两种情况下都起作用
browser.driver.findElement(by.css('.yourscss选择器');
//多做一些互动
browser.driver.findElement(by.css('.input css selector')).sendKeys('type something');
browser.driver.findElement(by.css('.button-css-selector')).click();
//2b)或者现在只使用量角器语法,
//因为你切换了,你现在应该可以使用它了。
//3)切换回
browser.switchTo().defaultContent();
//4)例如,如果iframe不存在,则使用量角器预期条件进行检查
var EC=量角器。预期条件;
//等待ifram不再出现在dom上。
browser.wait(EC.stalenessOf($('iframe')),5000