Protractor kullanarak angular e2e testleri için bir açılır menüden bir seçenek seçmeye çalışıyorum.
İşte seçme seçeneğinin kod parçacığı:
<select id="locregion" class="create_select ng-pristine ng-invalid ng-invalid-required" required="" ng-disabled="organization.id !== undefined" ng-options="o.id as o.name for o in organizations" ng-model="organization.parent_id">
<option value="?" selected="selected"></option>
<option value="0">Ranjans Mobile Testing</option>
<option value="1">BeaverBox Testing</option>
<option value="2">BadgerBox</option>
<option value="3">CritterCase</option>
<option value="4">BoxLox</option>
<option value="5">BooBoBum</option>
</select>
Denedim:
ptor.findElement(protractor.By.css('select option:1')).click();
Bu bana aşağıdaki hatayı veriyor:
Geçersiz veya yasa dışı bir dize belirtildi Derleme bilgisi: sürüm: '2.35.0', revizyon: 'c916b9d', zaman: '2013-08-12 15:42:01' Sistem bilgisi: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9', java.version: '1.6.0_65' Sürücü bilgisi: driver.version: unknown
Ben de denedim:
ptor.findElement(protractor.By.xpath('/html/body/div[2]/div/div[4]/div/div/div/div[3]/ng-include/div/div[2]/div/div/organization-form/form/div[2]/select/option[3]')).click();
Bu bana aşağıdaki hatayı veriyor:
ElementNotVisibleError: Eleman şu anda görünür değil ve bu nedenle etkileşime girilemez Komut süresi veya zaman aşımı: 9 milisaniye Derleme bilgisi: sürüm: '2.35.0', revizyon: 'c916b9d', zaman: '2013-08-12 15:42:01' Sistem bilgisi: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9', java.version: '1.6.0_65' Oturum Kimliği: bdeb8088-d8ad-0f49-aad9-82201c45c63f Sürücü bilgisi: org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=24.0, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
Lütfen biri bana bu sorunla ilgili yardımcı olabilir mi veya burada neyi yanlış yapıyor olabileceğime ışık tutabilir mi?
Ben de benzer bir sorun yaşadım ve sonunda açılır değerleri seçen bir yardımcı fonksiyon yazdım.
Sonunda seçenek numarasına göre seçim yapmanın iyi olduğuna karar verdim ve bu nedenle bir öğe ve seçenekNumarası alan ve bu seçenekNumarasını seçen bir yöntem yazdım. Eğer optionNumber null ise hiçbir şey seçmez (açılır listeyi seçilmemiş olarak bırakır).
var selectDropdownbyNum = function ( element, optionNum ) {
if (optionNum){
var options = element.all(by.tagName('option'))
.then(function(options){
options[optionNum].click();
});
}
};
Daha fazla ayrıntı isterseniz bir blog yazısı yazdım, açılır menüde seçilen seçeneğin metnini doğrulamayı da kapsıyor: http://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/
Bunu deneyebilirsiniz umarım işe yarar
element.all(by.id('locregion')).then(function(selectItem) {
expect(selectItem[0].getText()).toEqual('Ranjans Mobile Testing')
selectItem[0].click(); //will click on first item
selectItem[3].click(); //will click on fourth item
});