it-swarm-tr.com

Selenium ile tarayıcı açılır pencerelerini kullanma

Selenium regresyon testlerini mevcut kod tabanımıza göre uyguluyoruz ve web uygulamamızdaki bazı ekranlar orta adımlar için açılır pencereler kullanıyor.

Şu anda testteki komutları kullanıyoruz:

// force new window to open at this point - so we can select it later
Selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
Selenium().click("//input[@value='Submit']");
Selenium().waitForPopUp("enquiryPopup", getWaitTime());
Selenium().selectWindow("enquiryPopup");

... hangi çalışır çoğu zaman . Bazen test waitForPopUp() satırında başarısız olur. 

com.thoughtworks.Selenium.SeleniumException: Permission denied

Daha iyi, daha fazla güvenilir yöntemi önerebilir mi?

Ayrıca, bu testleri öncelikle IE6 ve 7'de yapıyoruz.

20
brasskazoo

İşe yarıyor!! Sadece selenliyi tercih edenler için kolaylaştırmak için.

Bu benim için IE7 (normal mod) kullanarak çalıştı. 

Ne garip bir güçlük. Gökyüzündeki spagetti canavarına SO için teşekkür et, yoksa IE’de bu işi yapmamın bir yolu yok.

<tr>
    <td>getEval</td>
    <td>Selenium.browserbot.getCurrentWindow().open('', 'windowName');</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>buttonName</td>
    <td></td>
</tr>
<tr>
    <td>windowFocus</td>
    <td>windowName</td>
    <td></td>
</tr>
<tr>
    <td>waitForPopUp</td>
    <td>windowName</td>
    <td>3000</td>
</tr>
<tr>
    <td>selectWindow</td>
    <td>windowName</td>
    <td></td>
</tr>
3
branchgabriel

Eğer * iehta modunda çalışıyorsanız, o zaman burada ve orada bazı aksaklıklar ile karşılaşacaksınız. Selenium'u işimde çalıştırıyoruz ve IE ve AJAX ile ilgili birçok sorun var gibi görünüyor.

Ancak, karşılaştığınız sorun, Selenyum'un tamamen yüklenmeden önce başka bir penceredeki bir bileşene erişmeye çalıştığı bir konu gibi görünüyor. Varsayılan zaman aşımı aralığınızın neye ayarlı olduğundan emin değilim, ancak sorunu aşmak için bunu 60 (60000ms) saniyeye kadar yükseltmeyi deneyebilirsiniz.

Bunun dışında testlerinizi çok daha güvenilir sonuçlar ürettiği için Firefox'ta (* chrome kullanarak) çalıştırmanızı öneririm, ancak bazen işletme gereksinimleri nedeniyle mümkün olmuyor.

1
Josh

Az önce başka bir Selenyum işlevi eklemeyi denedim, windowFocus():

// force new window to open at this point - so we can select it later
Selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
Selenium().click("//input[@value='Submit']");
Selenium().windowFocus("enquiryPopup");
Selenium().waitForPopUp("enquiryPopup", getWaitTime());
Selenium().selectWindow("enquiryPopup");

Test, yerel olarak çalıştırdığımda başarılı oldu, ancak yalnızca tüm bu yöntem çağrılarıyla - create/focus/wait/select. 

Yapım sunucusunun tüm testleri yapmasına izin vermek üzereyim ve bu da başarılı olursa, bunun dışında bir kütüphane işlevi göreceğim ...!

0
brasskazoo

Bir açılır pencerede bir iframe seçmem ve bir form doldurmam gerekiyordu. Selenium'un iframe'imi bulamadığı selectWindow cmd'sini kullanırken sorun yaşadım, bu yüzden komutu kaldırdım.

Bu selenese benim için iyi çalıştı (iframe unvanı ve id = account_frame):

<tr>
  <td>click</td>
  <td>//a[@class='item_add']</td>
  <td></td>
</tr>
<tr>
  <td>windowFocus</td>
  <td>account_frame</td>
  <td></td>
</tr>
<tr>
  <td>waitForPopUp</td>
  <td>account_frame</td>
  <td>10000</td>
</tr>
0
nicholasklick