2017-11-24 4 views
1

Ich habe mehrere verschachtelte Frames und ich muss auf die Elemente unter diesen zugreifen. Da diese Frames dynamisch sind, kann ich nicht auf diese Elemente zugreifen. Ist es mir möglich, die Elemente zuzugreifen, ohne driver.switchTo() zu verwenden. Rahmen()Ist es möglich, zu einem Element in einem Rahmen zu wechseln, ohne driver.switchTo() .frame ("frameName") in Selenium Webdriver Java zu verwenden?

wie XPath direkt oder jquery, Javascript oder etwas mit? Alle Vorschläge sind willkommen

+0

Verwenden XPath die iframe findelement Methode zu finden, und das Element an die SwitchTo Methode übergeben. Sie können den Index auch verwenden, um zum Iframe zu wechseln. – Grasshopper

Antwort

0

Ich glaube nicht, dass Sie zu einem Rahmen ohne Verwendung von driver.switchTo.frame() wechseln können, wenn Sie mehrere Frames haben.

Aber Sie können den XPath wie unten mit ID enthält für dynamischen Frames verwenden:

"//iframe[contains(@id,'frame')]" 

(oder)

Sie können versuchen, das Attribut src des Rahmens in Ihrem XPath.

(oder)

Sie die Anzahl der Frames oder iFrames finden unter XPath verwenden, wenn Sie Ihre Rahmenposition ist gleich:

int noofframes=driver.findelements(By.tagName(“iframe”)).size(); 

Und mit Index, den Sie zu einem bestimmten Bild wechseln und dann Sie können versuchen, die Elemente im Rahmen zu finden.

driver.switchTo.frame(i); 

Hoffe, das hilft.

2

In einfachen Worten,

No, wäre es nicht möglich sein, die Elemente zuzugreifen, ohne die beabsichtigte Umschalten in d.h.ohne driver.switchTo().frame()

mit dem vorgesehenen Rahmen zu wechseln, müssen Sie entweder die Verwendung folgende:

  • Schalter durch Frame Name

    driver.switchTo().frame("frame_name"); 
    
  • Schalter durch Frame ID

    driver.switchTo().frame("frame_id"); 
    
  • Schalter durch Frame Index

    driver.switchTo().frame(1); 
    
  • Schalter durch WebElement

    driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@attribute='value']"))); 
    
  • Switch to Parent Frame

    driver.switchTo().parentFrame(); 
    
  • Umschalten auf Default Content

    driver.switchTo().defaultContent(); 
    
Verwandte Themen