2017-03-12 1 views
0

Für die Rückkehr zum übergeordneten Frame in Selen wird driver.switchTo().parentFrame(); verwendet. In meiner Beispiel-Website habe ich die gleiche Funktionalität mit driver.switchTo().defaultContent(); auch erreicht.Zurück zum übergeordneten Frame in Selen

Gibt es einen funktionellen Unterschied zwischen diesen beide:

- driver.switchTo().parentFrame(); 
- driver.switchTo().defaultContent(); 

Während in einem HTML-Dokument Frames bezieht, ist "Parent Frame" und "Default Content" anders? Bitte erkläre.

+0

Hallo, ich denke, es macht die gleiche Zeit die gleiche. Wenn Sie jedoch 2 oder mehr eingebettete Frames haben, möchten Sie möglicherweise zum ersten übergeordneten Frame _or_ zum Hauptrahmen zurückkehren (defaultContent). –

Antwort

0

Es hat einen gewissen Unterschied. Angenommen, Sie haben eine Seite mit einem Rahmen "drei" innerhalb eines Rahmens "zwei" innerhalb eines anderen Rahmens "eins", vorausgesetzt, Sie befinden sich auf dem Rahmen "drei", der am weitesten innen liegt ...

driver.switchTo().parentFrame(); - Dies wird sich verschieben Konzentriere dich wieder auf den Rahmen "zwei". driver.switchTo().defaultContent(); - Dadurch wird der Fokus wieder auf den Haupt (Standard) Inhalt verschoben, in dem der Rahmen "Eins" liegt.

Ich hoffe, das war hilfreich. Vielen Dank !

0

Wenn Sie nur zwei Frames auf einer Seite haben, gibt es keinen funktionalen Unterschied. Die App, an der ich arbeite, hat jedoch bis zu fünf verschachtelte Frames auf einer Seite.

Zum Beispiel muss ich mit zwei Elementen arbeiten, die im dritten Frame sind, Schritt in einem anderen Frame, dann Schritt zurück zu arbeiten mit einem anderen Element in Frame 3. Ich habe zwei Möglichkeiten, dies zu erreichen.

1: Ich kann den ganzen Weg und dann zurück in

//click element 1 
driver.SwitchTo().DefaultContent(); 
driver.SwitchTo().Frame(driver.FindElement(By.Id("Frame1"))); 
driver.SwitchTo().Frame(driver.FindElement(By.Id("Frame2"))); 
driver.FindElement(By.Id("element1")).Click(); 
//click element 2 
driver.SwitchTo().DefaultContent(); 
driver.SwitchTo().Frame(driver.FindElement(By.Id("Frame1"))); 
driver.SwitchTo().Frame(driver.FindElement(By.Id("Frame3"))); 
driver.FindElement(By.Id("element2")).Click(); 

Die andere Option, um den übergeordneten Frame Schritt zu wechseln ist.

//click element 1 
driver.SwitchTo().DefaultContent(); 
driver.SwitchTo().Frame(driver.FindElement(By.Id("Frame1"))); 
driver.SwitchTo().Frame(driver.FindElement(By.Id("Frame2"))); 
driver.FindElement(By.Id("element1")).Click(); 
//click element 2 
driver.SwitchTo().ParentFrame(); 
driver.SwitchTo().Frame(driver.FindElement(By.Id("Frame3"))); 
driver.FindElement(By.Id("element2")).Click(); 

Grundsätzlich speichert es die Mühe des Schreibens Code den ganzen Weg zurück zu wechseln heraus dann in den Rahmen zurück, wenn Sie brauchen, um eine Ebene zu bewegen.

Verwandte Themen