2013-04-05 19 views
5

Chrome'da, watir-webdriver kullanarak, bir çocuk tarayıcı penceresi açan bir düğmeyi tıklıyorum.Kendiliğinden kapanan bir çocuk tarayıcı penceresi, Watir-webdriver'ın bağlantısını ana pencereye ayırır mı?

yapmam:

@browser.window(title: 'Child').use 

başarıyla o çocuk penceresindeki çeşitli öğelerle etkileşim.

Çok geçmeden, bu pencerede, sitenin ilk bakışta pencerenin açılmasının "noktası" olduğunu düşündüğü bir eylem var. örn., bu eylem gerçekleştirildiğinde, alt pencere kendini kapatır.

@browser.window(title: 'Parent').use # => results in 
# Selenium::WebDriver::Error::NoSuchWindowError: emptyScript execution failed; 
# The window could not be found 

Ben bu bir Selenyum/Watir-webdriver hata olduğunu düşünüyoruz nedeni aşağıdaki çünkü: Ben ancak, ana penceresini kullanarak geri dönmek için watir-webdriver anlatınca

, bir hata alıyorum Kod Çalışması:

@browser.window(title: 'Child').use 
# ... Now I do various things in the child window that do NOT 
# ... cause it to close itself. They all work as expected. 
# ... 
puts @browser.window(title: 'Parent').present? #=>true 
@browser.window(title: 'Child').close 
puts @browser.window(title: 'Parent').present? #=>true 
@browser.window(title: 'Parent').use # => No error thrown 

Tek fark, alt pencerenin kendisini kapatmasına neden olan eylemdir.

Watirspec kodunun kendiliğinden kapanabilen bir pencere için bir test durumu olmadığını fark ettim, bu yüzden belki de watir-webdriver'daki Windows kodunun gözden kaçmış bir yönü.

Tamam, şimdi de sen çalıştırabilirsiniz kod, bu sorunu kendiniz görmektir:

require 'watir-webdriver' 
@b = Watir::Browser.new :chrome 
@b.goto 'ckeditor.com/demo#full' 
@b.div(id: 'cke_editor1').link(title: 'Link').click 
@b.link(title: 'Browse Server').wait_until_present 
@b.link(title: 'Browse Server').click 
@b.window(title: 'CKFinder').use { 
    @b.frame(title: 'CKFinder').link(id: 'r0').right_click 
    @b.frame(title: 'CKFinder').frame(id: 'cke_22_frame').wait_until_present 
    @b.frame(title: 'CKFinder').frame(id: 'cke_22_frame').link(id: 'cke_200').click 
} 

bu hata ile sonuçlanır:

Selenium::WebDriver::Error::NoSuchWindowError: emptyScript execution failed; 
The window could not be found 

I deme Senin için asla nuthin 'yapmadım! :-)

Şimdi gitmeden önce "Neden 3. Parti düzenleme aracını test ediyorsun, çılgın adam?" Bunu sizin için cevaplayacağım: Ben değilim.

Test ettiğim şey, CKEditor aracı tarafından üretilen kaynak kodun belirli bir durumda düzgün bir şekilde güncellenmesidir (ki buradaki sorunun kapsamı çok daha fazladır). Bunu ayarlamak için, ilk olarak kaynak kodunun olduğunu bilmem gerekir, böylece daha sonra farklı bir işlem tarafından düzgün şekilde güncellendiğini doğrulayabilirim. Ve bunu yapmak için, öncelikle CKEditor’ın bağlantı aracını kullanarak doğru şekilde ayarlamalıyım. Capiche?

+0

Ayrıca böyle bir şey (test) yapmak mümkün olabilir veya "watir" webdriver? –

+0

Watir-webdriver - ilk cümlede yazdığı gibi. :-) –

+0

Ben watirspec baktım ve abe bu konuda haklı. Çocuk penceresini görebildiğimizi görmek için bir testimiz var, ama bu o. Örnek olarak rdoc'daki örnek kod gösterimi için bir test kullanmayız. –

cevap

1

Eğer

@browser.windows[0] 

kullanabilirsiniz açılan geri ilk penceresine ulaşmak için gerekirse `selenyum kullanırken

@browser.windows.each do |window| 
    if window.title.include?(target_string) 
    window.use 
    end 
end 
+0

Bu kod çalıştırılmadan önce hata oluşmazsa harika olurdu. (ne olacak ne yazık ki). –