angularjs kullanılarak oluşturulan bir web formu içinde, bir açılan kutu içine bazı verileri girmeye çalışıyorum bekleyerek sonra aşağı ok tuşuna basarak bir değer seçin ve ardından Enter tuşuna basın. Bundan sonra, açılan kutunun pop-up penceresinin (Kendo UI Combo Box) artık görünmediğini kontrol ediyorum. Windows'ta Windows ve Mac OS X'te Chrome'da çalıştırmakAçıölçer SendKeys()
testleri, aşağıdaki kod çalışıyor:
comboInput.sendKeys('CAN')
.sendKeys(protractor.Key.ENTER)
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ENTER);
expect(input.getAttribute('value')).toBe('id_3');
expect(popup.getAttribute('style')).toContain('display: none');
Açıölçer "CAN" combobox içine, sonra aşağı ok kullanılarak görünür girişini seçer girer tuşuna basın ve ardından Enter tuşu ile seçimi onaylar, bu da Birleşik Kutuyu açmayı da kapatır. Popup nedense beklentiyi değerlendirmeden önce ateş edilmez görevden anahtar olay girin beri OS X'te
, bu, ikinci beklenti hep başarısız, işe yaramaz. Ben çalışması için aşağıdaki kodu değiştirmek olduğunu fark ettik:comboInput.sendKeys('CAN')
.sendKeys(protractor.Key.ENTER)
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ENTER).then(function() {
expect(input.getAttribute('value')).toBe('id_3');
expect(popup.getAttribute('style')).toContain('display: none');
});
sendKeys
bir söz verir ve ben orada beklenti koyarsanız, her şey gayet iyi çalışıyor.
bu bunu yapmak için doğru yolu var mı? Web'de bulduğum örneklerin hiçbiri, sendKeys
numaralı telefondan then
numaralı telefonu kullanamaz.
Ve neden yapar Windows üzerinde değil, OS X üzerinde ilk kod çalışır? Bir şey mi eksik? Bunu yapmanın daha iyi bir yolu var mı?
Edit: Bu muhtemelen OS X'deki yerel klavye olaylarının işlenmesiyle ilgili midir?
Not: http://angular.github.io/protractor/#/api?view=webdriver.WebElement.prototype.sendKeys de Açıölçer belgeleri aşağıdaki sahiptir yerli klavye olayları henüz (OS X üzerinde örneğin Firefox) desteklenmez tarayıcılarda, anahtar olaylar sentez edilecektir. Özel birleştirme tuşları standart bir QWERTY en-us klavye düzenine göre sentezlenir.
sendKeys
yana
Mükemmel bir soru! Cevabım yok, ama Jasmine'i kullanmanız halinde, 'sendKeys' parçasını '' bekle '' kısmından her birini kendi 'it()' bloğundan ayırın ve o teknikle kaçının. –
Ayrıca ödeme sorunu [# 690] (https://github.com/angular/protractor/issues/690) OSX SendKeys konularda bazı bağlantılar için. –
Ama bu amacı bozmaz mıydı?Bana göre, her bir test (bir "o" da tarif edilmiştir) hem eylemleri (bu durumda sendKeys'i) hem de doğrulamayı ("bekliyor") içerir. Bunları ayrı ayrı testlere ayırmak bu bağlantıyı koparır. – nwinkler