2017-05-29 2 views
1

Ich habe den folgenden ungewöhnlichen Anwendungsfall. Ich Detail es unterOb ein Iframe schräg ist oder nicht, mit Winkelmesser

1) Ich bin auf einer Winkel Seite & ich einige Aktionen auf der Seite [Es lädt ein nicht-Winkel iFrame]

2) Ich schalte auf die Nicht-Winkel iframe & interact mit einigen Bildschirmen.

3) Dies führt schließlich dazu, dass die Umleitung wieder auf eine eckige Seite erfolgt.

Wenn ich den Winkelmesser für Schritt 2 verwende, muss ich ihn mit dem Flag browser.ignoreSynchronization verwenden, das auf false gesetzt ist, da es nicht eckig ist. Ich brauche einen Weg, um zu überprüfen, ob die Form ich mit winkelig interagiere oder nicht, um mit einem reibungslosen Übergang von den Schritten 2) zu 3) zu helfen.

Ich weiß, dass Sie für Winkelfunktionen auf einer Seite automatisch überprüfen

browser.executeAsyncScript oder browser.executeScript zusammen mit

!! window.angular (Winkel v1)

!! Fenster mit .getAllAngularTestabilities (eckige v2)

aber dies funktioniert nicht in diesem Anwendungsfall, da alle diese True zurückgegeben werden, unabhängig davon, ob Sie mit dem non angular Iframe interagieren oder nicht. Hätte jemand einen anderen Vorschlag, der für einen solchen Anwendungsfall funktionieren könnte? Vielen Dank im Voraus.

Antwort

0

Was ich normalerweise tun, wenn ich einen Iframe automatisieren müssen, ist die folgende

// 1) When you know the iframe is there 
 
browser.switchTo().frame(0); 
 

 
// 2 a) You don't need to disable the wait for anguler, just use vanila webdriver, it will work on both 
 
browser.driver.findElement(by.css('.your-css-selector')); 
 
// Do some more interaction 
 
browser.driver.findElement(by.css('.input-css-selector')).sendKeys('type something'); 
 
browser.driver.findElement(by.css('.button-css-selector')).click()); 
 

 
// 2b) Or now just use the Protractor syntax, 
 
//  because you switched you should be able to use it now. 
 

 
// 3) Switch back 
 
browser.switchTo().defaultContent(); 
 

 
// 4) Check for example with Protractor expectedConditions if the iframe is gone 
 
var EC = protractor.ExpectedConditions; 
 
// Waits for the ifram to be no longer present on the dom. 
 
browser.wait(EC.stalenessOf($('iframe')), 5000);

Wie Sie sehen gibt es keine Notwendigkeit browser.ignoreSynchronization = true; ist

Ich hoffe, das hilft

zu tun
Verwandte Themen