2014-09-08 35 views
5

Bir sınıf adına bir Iframe seçmeye çalışıyorum ama çalışmıyor, tagName ile çalışıyorum ama sonra Iframe içinde öğe içinde yazmayı denedim 't, buradan lütfen bana yardımcı olabilir benim kodudur:Selenyum webdriver içinde bir Iframe seçemezsiniz

webDriver driver.switchTo().frame(driver.findElement(By.className("cke_wysiwyg_frame cke_reset"))); 
driver.findElement(By.xpath("//body[contains(text(),'type here')]")).sendKeys("Testing"); 

Ve burada benim Web sayfası HTML şudur: class.Check kullanarak webdriver belgeleri kullanarak bir iFrame seçmek olamaz

<div id="cke_534_contents" class="cke_contents cke_reset" role="presentation" style="height: 75px;"> 
    <span id="cke_586" class="cke_voice_label">Press ALT 0 for help</span> 
    <iframe class="cke_wysiwyg_frame cke_reset" frameborder="0" src="" style="width: 100%; height: 100%;" aria-describedby="cke_586" tabindex="0" allowtransparency="true"> 
     <!DOCTYPE html> 
     <html lang="en-gb" dir="ltr"> 
     <head> 
     <body class="cke_editable cke_editable_themed cke_contents_ltr cke_show_borders" contenteditable="true" spellcheck="true"> 
      type here 
     </body> 
     </html> 
    </iframe> 
</div> 
+0

tüm bu sık sık elemanları bulmak için ama Parametrede herhangi bir beyaz = boşluk içeremeyeceğine eminim. Bunun yerine 'cssSlector' kullanmayı denediniz mi? driver.findElement (By.CssSelector ("cke_wysiwyg_frame.cke_reset")); –

cevap

7

sorun üst penceresine dönmek sonra xpath

driver.switchTo().defaultContent(); 
driver.switchTo().frame(driver.findElement(By.xpath(iframeXpath))); 

tarafından iFrame bulma ve çözen kişi: Ben `className` kullanmayan

driver.switchTo().defaultContent(); 
4

: -

https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.TargetLocator.html

  1. Sen 'Ad'/'id' özelliğidir tarafından iFrame geçebilirsiniz.

    driver.switchTo().frame("frame1"); 
    
  2. Çerçeve dizinine geçebilirsiniz.

    driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0)); 
    

Şimdi mevcut kaç iFrames tüm sayfayı kontrol etmek zorunda ?? Eğer varsa: 3, her zaman 3. iFrame kullanın.

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(3)); 

Umarım yardımcı olur.

+0

Merhaba M, yukarıdaki satırı yazdığımda get(); method "tagName (" iframe "). olsun (3));" –

+0

Ekstra eksik bir desteğe ihtiyacınız var: driver.switchTo(). Frame (driver.findElements (By.tagName ("iframe")). Get (0)); – nanospeck

+0

Bağlantı öldü – PourMeSomeCode

1

Evet, bir hata oluştu .. Bir şey yapabiliyor musunuz? 3. olarak değiştirmek istediğinizde, sayfada kaç iframe bulunduğunu sayın.

Doğrudan doktor söylediği gibi

driver.switchTo().frame(index) 

Yani kod böyle bir şey olabilir, int değeri belirtmek: -

driver.switchTo().frame(3); 

Ve varsayılan İçeriğine ulaşmak için unutma.

driver.switchTo().defaultContent(); 

Bu işe yarayıp yaramazsa lütfen bana bildirin.

İlgili konular