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.
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). –