2012-06-27 16 views
6

Selenium rc testimi Eclipse ile TestNG'de çalıştırıyorum. Yeni bir tarayıcı sayfası açmaya çalışan bir bağlantım var. Çalışmak için bu yeni sayfayı nasıl seçebilirim? o sayfa bulunamadı diyor ancakselenium, nasıl yeni pencere seçebilirim

selenium.selectWindow("name=NewPage");

: Bu kodu kullanın. Ben de bu kodla sayfa kimlikleri veya başlıklar tanımlamak deneyin: Bu benim yeni açılmış bir pencere tanımlamıyor

String[] wins = selenium.getAllWindowIds(); 
    for (String s : wins) 
     System.out.println("win: " + s); 

:

win: MainPage 
win: 

kullanım selenium.getAllWindowNames() ben win: selenium_main_app_window win: selenium_blank65815 olsun.

Bu kodu selenium.selectWindow("name=blank99157"); yazmak ama hata alıyorum - Doğru pencere kimliğini kullanarak olmayabilir ERROR: Window does not exist. If this looks like a Selenium bug, make sure to read http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple-windows for potential workarounds.

cevap

0

.

Bu bağlantıya bakın. Cevabınızı here bulabilirsiniz.

Bunun size yardımcı olacağını söyleyeyim.

+0

faydalı beni değil – khris

0

selenium.getAllWindowNames(), selenium.getAllWindowTitles() 'ı deneyin. Bunlardan biri kesin olarak çalışacaktır.

+0

işler için değil gösterdi adı – khris

+0

Kullanım selenium.selectWindow (MainPage) ile pencereyi seçemezsiniz eski geri gelmek o sayfayı ve selenium.selectWindow (null değeri) gitmek sayfa. Eğer bu işe yaramıyorsa, bunu da deneyin. selenium.openWindow ("URL", "MyWindow"); selenium.selectWindow ("MyWindow"); –

7

Pencerenin açık bir adı yoktur, bu nedenle adıyla seçemezsiniz. Pencere JavaScript aracılığıyla açılır ve size kümesi adıyla pencereyi seçmek için o zaman mümkün olacak, window.open("someUrl", "someName"); için window.open("someUrl"); değiştirmeyi deneyin senaryoyu değiştirebiliyorsanız

  1. . MDN doc for window.open() hakkında daha fazla bilgi.

  2. Selenium RC, <a href="someUrl" target="_blank"> bağlantılarını desteklememektedir (bağlantıyı yeni bir pencerede açar). pencere bu tip bir bağlantı tarafından açılırsa nedenle, sahip bu <a> maddeyi bulmak için, sen href niteliğini almak ve önce veya onload olay sırasında JavaScript aracılığıyla açılırsa

    selenium.openWindow(theFoundUrl, "theNewWindow"); 
    selenium.selectWindow("id=theNewWindow"); 
    
  3. çağrı 'böcek SEL-339 veya openWindow() ve selectWindow() javadocs bunun üzerine

    selenium.openWindow("", "theNewWindow"); 
    selenium.selectWindow("id=theNewWindow"); 
    

    daha fazla bilgiyi aramak gerekir edeceğiz. Yalnızca iki pencere varsa o olmayan ilk üst pencere seçer çünkü

  4. /, sen belli ki, en kolay yoludur

    selenium.selectPopup()

    deneyebilirsiniz, yeni bir tane açmak istiyorum. Bu nedenle, yalnızca en yeni açılır pencereyi seçmek istediğinizde kullanışlıdır.yeni pencere bir benzersiz başlık varsa

  5. , sen Selenyum için adları oluşturur (

    selenium.selectPopup("Title of the window"); 
    

    veya selenium.selectWindow("title=Title of the window"); Aksi

  6. , doğru adını almak için selenium.getAllWindowNames() yineleme gerekir yapabilirsiniz bir olmadan pencereler. Ancak, bu ismi test kutunuzda kodlayamazsınız, çünkü her seferinde değişecektir, bu nedenle bunun için dinamik bir mantık çalışması yapmanız gerekecektir.

  7. Bunu sevmeyeceksiniz: WebDriver için gidin. Bu tür sorunlara daha dirençli olan olmalıdır.

+0

Ben varyantı deneyin 6. Böyle bir kod yazdı: Dize kazanır [] = selenium.getAllWindowNames(); \t için (Dize s: kazanır) \t System.out.println ("win:" + s); \t \t \t \t selenium.selectWindow ("name = wins [2]"); – khris

+0

Ancak hata olsun: HATA: Pencere mevcut değil. Bu bir Selenium hatasına benziyorsa, olası geçici çözümler için http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple-windows'u okuduğunuzdan emin olun. – khris

+0

@khris Evet, Özel Durum'daki bağlantı yatıyor, dokümanlar bölümünde belirtilen geçici çözüm bulunmamaktadır. Bununla birlikte, 2 ve 3 numaralı bölümlerde cevabımda bahsedilen geçici çözümü deneyebilirsiniz, bu muhtemelen gördüğünüz hatadır. –

1
WebDriver driver = new FirefoxDriver(); 
WebElement inputhandler = driver.findelement(By.linktext("whatever here")); 
inputhandler.click(); 
String parentHandle = driver.getWindowHandle(); 
Set<String> PopHandle = driver.getWindowHandles(); 
Iterator<String> it = PopHandle.iterator(); 
String ChildHandle = ""; 
while(it.hasNext()) 
{ 
    if (it.next() != parentHandle) 
    { 
     ChildHandle = it.next().toString(); 
     // because the new window will be the last one opened 
    } 
} 
driver.switchTo().window(ChildHandle); 
WebDriverWait wait1 = new WebDriverWait(driver,30); 
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.id("something on page"))); 

// do whatever you want to do in the page here 

driver.close(); 
driver.switchTo().window(parentHandle);