driver.switchTo.frame () ist überladen zu Akzeptiere einen Frame-Namen oder eine Ganzzahl . Dieser Int ist ein 0-basierter Index der verfügbaren Frames. Der erste Frame wäre 0, der zweite 1 und so weiter.
Ich habe gerade einen wirklich schnellen Test mit der Java-Bindung und Firefox gegen diese HTML-Seite durchgeführt.
%Vor%Ich bin erfolgreich in der Lage, driver.switchTo () zu verwenden. frame (0); Bezug auf Rahmen a und driver.switchTo () .frame (1); um auf Frame b zuzugreifen.
In selen, wenn Sie wissen, dass die relative Position des Rahmens Sie in der Lage sein, den selectFrame-Befehl mit der Zeichenfolge "relative = up" zu verwenden, um es einen Frame herauf z. selenium.SelectFrame("relative=up");
oder um zum obersten Frame zu springen benutze "relative = top"
Sie können einfach die ID Ihres iframe anstelle von iframe-name angeben.
Siehe mein Beispiel unten, es hat für mich funktioniert.
Im Beispiel wechsle ich auf meiner Seite zu einem iframe und klicke auf das Element in diesem iframe, das "worksheet0" ist.
Verwenden Sie den Code:
%Vor%Der HTML-Code des iframe:
%Vor%Zusätzlich zur Verwendung des Indexes (wie die anderen Antworten vorschlagen) können Sie in C # den iFrame nach tagName auswählen. Mein Beispiel geht davon aus, dass es nur einen einzigen iFrame auf der Seite gibt.
%Vor%Hinweis: Sie müssen die Informationen aus dem IWebElement .Text oder .Click beispielsweise abrufen, bevor Sie Driver.SwitchTo () aufrufen. DefaultContent ();
Ich habe diese Erweiterungen Methoden erstellt, um zu helfen
%Vor%Ein Beispiel für die Verwendung der Erweiterungsmethoden:
%Vor%Tags und Links c# selenium selenium-webdriver webdriver