de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
Ranjan Bhambroo
Ranjan Bhambroo
Question

Bagaimana untuk memilih pilihan di drop down protractorjs e2e tes

Saya mencoba untuk memilih pilihan dari drop-down untuk sudut e2e tes menggunakan busur derajat.

Berikut ini adalah potongan kode dari pilih opsi:

<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>

Saya telah mencoba:

ptor.findElement(protractor.By.css('select option:1')).click();

Ini memberi saya kesalahan berikut:

Yang tidak sah atau ilegal string ditentukan Membangun info: versi: '2.35.0', revisi: 'c916b9d', waktu: '2013-08-12 15:42:01' Sistem info: os.nama: 'Mac OS X', os.arch: 'x86_64', os.versi: '10.9', jawa.versi: '1.6.0_65' Sopir info: sopir.versi: tidak diketahui

Saya juga mencoba:

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();

Ini memberi saya kesalahan berikut:

ElementNotVisibleError: Elemen saat ini tidak terlihat dan tidak dapat berinteraksi dengan Perintah durasi atau timeout: 9 milidetik Membangun info: versi: '2.35.0', revisi: 'c916b9d', waktu: '2013-08-12 15:42:01' Sistem info: os.nama: 'Mac OS X', os.arch: 'x86_64', os.versi: '10.9', jawa.versi: '1.6.0_65' Sesi ID: bdeb8088-d8ad-0f49-aad9-82201c45c63f Sopir info: org.openqa.selenium.firefox.FirefoxDriver Kemampuan [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, diputar=false, locationContextEnabled=true, versi=24.0, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]

Ada yang bisa tolong bantu saya dengan masalah ini atau melemparkan beberapa cahaya pada apa yang saya bisa lakukan salah di sini.

113 2013-10-25T21:08:07+00:00 28
 alecxe
alecxe
Pertanyaan edit 26 Desember 2015 в 1:42
Pemrograman
javascript
testing
selenium
angularjs
protractor
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
 Fatz
Fatz
17 Juni 2014 в 8:47
2014-06-17T08:47:49+00:00
Lebih
Sumber
Sunting
#22624644

Bagi saya bekerja seperti pesona

element(by.cssContainingText('option', 'BeaverBox Testing')).click();

Semoga membantu.

Dmitri Zaitsev
Dmitri Zaitsev
Jawaban edit 16 Mei 2015 в 2:31
243
0
Solution / Answer
 PaulL
PaulL
1 Desember 2013 в 3:05
2013-12-01T03:05:10+00:00
Lebih
Sumber
Sunting
#22624639

Saya punya masalah yang sama, dan akhirnya menulis fungsi pembantu yang memilih nilai-nilai menurun.

Akhirnya saya memutuskan bahwa saya baik-baik saja dengan memilih opsi nomor, dan oleh karena itu menulis sebuah metode yang mengambil unsur dan optionNumber, dan memilih yang optionNumber. Jika optionNumber null itu memilih apa-apa (meninggalkan dropdown yang tidak dipilih).

var selectDropdownbyNum = function ( element, optionNum ) {
  if (optionNum){
    var options = element.all(by.tagName('option'))   
      .then(function(options){
        options[optionNum].click();
      });
  }
};

Aku menulis posting blog jika anda ingin lebih detail, hal ini juga mencakup memverifikasi teks dari opsi yang dipilih di dropdown: http://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/

 Maverick
Maverick
Jawaban edit 11 Mei 2018 в 4:13
82
0
 alecxe
alecxe
3 April 2015 в 12:17
2015-04-03T00:17:42+00:00
Lebih
Sumber
Sunting
#22624647

Elegan pendekatan akan melibatkan membuat abstraksi sama dengan yang lainnya selenium bahasa binding menawarkan out-of-the-box (misalnya Pilih kelas di Python atau Java).

Let's membuat nyaman wrapper dan menyembunyikan implementasi detail dalam:

var SelectWrapper = function(selector) {
    this.webElement = element(selector);
};
SelectWrapper.prototype.getOptions = function() {
    return this.webElement.all(by.tagName('option'));
};
SelectWrapper.prototype.getSelectedOptions = function() {
    return this.webElement.all(by.css('option[selected="selected"]'));
};
SelectWrapper.prototype.selectByValue = function(value) {
    return this.webElement.all(by.css('option[value="' + value + '"]')).click();
};
SelectWrapper.prototype.selectByPartialText = function(text) {
    return this.webElement.all(by.cssContainingText('option', text)).click();   
};
SelectWrapper.prototype.selectByText = function(text) {
    return this.webElement.all(by.xpath('option[.="' + text + '"]')).click();   
};

module.exports = SelectWrapper;

Contoh penggunaan (catatan cara mudah dibaca dan mudah-ke-menggunakan ini):

var SelectWrapper  = require('select-wrapper');
var mySelect = new SelectWrapper(by.id('locregion'));

# select an option by value
mySelect.selectByValue('4');

# select by visible text
mySelect.selectByText('BoxLox');

Solusi yang diambil dari topik berikut: https://stackoverflow.com/questions/28723419/select-option-abstraction.


FYI, menciptakan permintaan fitur: Pilih -> pilihan abstraksi.

 Community
Community
Jawaban edit 23 Mei 2017 в 11:54
28
0
Sandesh Danwale
Sandesh Danwale
15 Agustus 2014 в 7:58
2014-08-15T19:58:28+00:00
Lebih
Sumber
Sunting
#22624645
element(by.model('parent_id')).sendKeys('BKN01');
20
0
 bekite
bekite
25 Oktober 2013 в 10:07
2013-10-25T22:07:18+00:00
Lebih
Sumber
Sunting
#22624638

Untuk mengakses opsi tertentu yang anda butuhkan untuk memberikan nth-child() pemilih:

ptor.findElement(protractor.By.css('select option:nth-child(1)')).click();
15
0
 Xotabu4
Xotabu4
26 Mei 2014 в 1:43
2014-05-26T13:43:12+00:00
Lebih
Sumber
Sunting
#22624643

Ini adalah bagaimana saya melakukan seleksi.

function switchType(typeName) {
     $('.dropdown').element(By.cssContainingText('option', typeName)).click();
};
 Xotabu4
Xotabu4
Jawaban edit 2 Maret 2018 в 1:08
8
0
 Javeed
Javeed
13 April 2015 в 9:17
2015-04-13T09:17:50+00:00
Lebih
Sumber
Sunting
#22624648

Mencoba ini, itu bekerja untuk saya:

element(by.model('formModel.client'))
    .all(by.tagName('option'))
    .get(120)
    .click();
5
0
 Droogans
Droogans
29 April 2014 в 4:24
2014-04-29T16:24:45+00:00
Lebih
Sumber
Sunting
#22624642

Berikut ini's bagaimana saya melakukannya:

$('select').click();
$('select option=["' + optionInputFromFunction + '"]').click();
// This looks useless but it slows down the click event
// long enough to register a change in Angular.
browser.actions().mouseDown().mouseUp().perform();
5
0
Zahid Afaque
Zahid Afaque
9 Maret 2014 в 12:41
2014-03-09T12:41:59+00:00
Lebih
Sumber
Sunting
#22624640

Anda dapat mencoba ini berharap itu akan bekerja

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
});
4
0
 crashbus
crashbus
11 Juni 2018 в 10:18
2018-06-11T10:18:18+00:00
Lebih
Sumber
Sunting
#22624663

Kita menulis sebuah perpustakaan yang meliputi 3 cara untuk memilih opsi:

selectOption(option: ElementFinder |Locator | string, timeout?: number): Promise<void>

selectOptionByIndex(select: ElementFinder | Locator | string, index: number, timeout?: number): Promise<void>

selectOptionByText(select: ElementFinder | Locator | string, text: string, timeout?: number): Promise<void>

Fitur tambahan dari fungsi ini adalah bahwa mereka menunggu untuk elemen yang akan ditampilkan sebelum setiap aksi pilih dilakukan.

Anda dapat menemukannya pada npm @hetznercloud/busur derajat-uji-pembantu. Typings untuk Naskah yang disediakan juga.

 crashbus
crashbus
Jawaban edit 11 Juni 2018 в 10:26
3
0
surya  narayana raju g
surya narayana raju g
6 Oktober 2016 в 7:24
2016-10-06T07:24:48+00:00
Lebih
Sumber
Sunting
#22624655

Cara lain untuk mengatur pilihan elemen:

var select = element(by.model('organization.parent_id'));
select.$('[value="1"]').click();
3
0
 peterhendrick
peterhendrick
29 Juli 2015 в 1:27
2015-07-29T01:27:28+00:00
Lebih
Sumber
Sunting
#22624652

Masalahnya adalah bahwa solusi yang bekerja pada regular sudut pilih kotak tidak bekerja dengan Sudut Bahan md-pilih dan md-opsi menggunakan busur derajat. Yang satu ini telah diposting oleh yang lain, tetapi bekerja untuk saya dan saya tidak dapat mengomentari posting-nya belum (hanya 23 rep poin). Juga, saya membersihkannya sedikit, bukan dari browser.tidur, saya menggunakan browser.waitForAngular();

element.all(by.css('md-select')).each(function (eachElement, index) {
    eachElement.click();                    // select the <select>
    browser.waitForAngular();              // wait for the renderings to take effect
    element(by.css('md-option')).click();   // select the first md-option
    browser.waitForAngular();              // wait for the renderings to take effect
});
2
0
 Calahad
Calahad
27 Maret 2014 в 5:09
2014-03-27T05:09:50+00:00
Lebih
Sumber
Sunting
#22624641

Mungkin tidak super elegan, tapi efisien:

function selectOption(modelSelector, index) {
    for (var i=0; i<index; i++){
        element(by.model(modelSelector)).sendKeys("\uE015");
    }
}

Ini hanya mengirimkan kunci ke bawah pada pilih yang anda inginkan, dalam kasus kami, kami menggunakan modelSelector tapi jelas anda dapat menggunakan yang lain pemilih.

Kemudian di halaman saya object model:

selectMyOption: function (optionNum) {
       selectOption('myOption', optionNum)
}

Dan dari uji:

myPage.selectMyOption(1);
2
0
 Vladius
Vladius
19 Mei 2015 в 1:59
2015-05-19T13:59:36+00:00
Lebih
Sumber
Sunting
#22624649

Untuk memilih item (pilihan) dengan id yang unik seperti berikut ini:

<select
    ng-model="foo" 
    ng-options="bar as bar.title for bar in bars track by bar.id">
</select>

I'm menggunakan ini:

element(by.css('[value="' + neededBarId+ '"]')).click();
2
0
Julia Jacobs
Julia Jacobs
17 Juli 2015 в 9:28
2015-07-17T09:28:41+00:00
Lebih
Sumber
Sunting
#22624651

Ada's masalah dengan memilih opsi di Firefox yang Droogans's hack perbaikan yang ingin saya sampaikan di sini secara eksplisit, berharap itu dapat menyelamatkan seseorang beberapa masalah: https://github.com/angular/protractor/issues/480.

Bahkan jika anda tes passing lokal dengan Firefox, anda mungkin menemukan bahwa mereka're gagal pada CircleCI atau TravisCI atau apa pun yang anda're menggunakan CI&penyebaran. Menyadari masalah ini dari awal akan menyelamatkan saya banyak waktu:)

 Community
Community
Jawaban edit 23 Mei 2017 в 12:34
1
0
Adnan Ghaffar
Adnan Ghaffar
30 Desember 2016 в 6:49
2016-12-30T18:49:55+00:00
Lebih
Sumber
Sunting
#22624657

Pembantu untuk mengatur pilihan elemen:

selectDropDownByText:function(optionValue) {
            element(by.cssContainingText('option', optionValue)).click(); //optionValue: dropDownOption
        }
1
0
Ajay Patil
Ajay Patil
26 Februari 2017 в 10:19
2017-02-26T10:19:09+00:00
Lebih
Sumber
Sunting
#22624658

Jika di bawah adalah diberikan dropdown-

            <select ng-model="operator">
            <option value="name">Addition</option>
            <option value="age">Division</option>
            </select>

Kemudian protractorjs kode bisa-

        var operators=element(by.model('operator'));
            operators.$('[value=Addition]').click();

Sumber-https://github.com/sudut/busur derajat/masalah/600

1
0
 Shardul
Shardul
17 April 2017 в 3:17
2017-04-17T15:17:28+00:00
Lebih
Sumber
Sunting
#22624659

Pilih opsi oleh Indeks:

var selectDropdownElement= element(by.id('select-dropdown'));
selectDropdownElement.all(by.tagName('option'))
      .then(function (options) {
          options[0].click();
      });
1
0
 trunikov
trunikov
26 Mei 2017 в 12:12
2017-05-26T12:12:15+00:00
Lebih
Sumber
Sunting
#22624660

I've ditingkatkan sedikit solusi yang ditulis oleh PaulL. Pertama-tama saya tetap kode untuk menjadi kompatibel dengan busur derajat API. Dan kemudian saya menyatakan fungsi dalam 'onPrepare' bagian dari busur derajat config sebagai anggota browser contoh, sehingga dapat dirujuk bentuk apapun e2e spec.

  onPrepare: function() {
    browser._selectDropdownbyNum = function (element, optionNum) {
      /* A helper function to select in a dropdown control an option
      * with specified number.
      */
      return element.all(by.tagName('option')).then(
        function(options) {
          options[optionNum].click();
        });
    };
  },
1
0
 flaviomeira10
flaviomeira10
22 Mei 2015 в 5:18
2015-05-22T17:18:07+00:00
Lebih
Sumber
Sunting
#22624650

Cara lain untuk mengatur pilihan elemen:

var setOption = function(optionToSelect) {

    var select = element(by.id('locregion'));
    select.click();
    select.all(by.tagName('option')).filter(function(elem, index) {
        return elem.getText().then(function(text) {
            return text === optionToSelect;
        });
    }).then(function(filteredElements){
        filteredElements[0].click();
    });
};

// using the function
setOption('BeaverBox Testing');
0
0
Related communities 2
JavaScript Indonesia
JavaScript Indonesia
14 533 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
Angular Indonesia
Angular Indonesia
3 519 pengguna
Framework web development aplikasi web dan mobile https://angular.io/ Facebook Group https://www.facebook.com/groups/462764390497214/ Github Repo Angular ID https://github.com/angular-indonesia Medium Angular Indonesia https://medium.com/angularid
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 7 jam yang lalu
2
Akshit Mehta
Terdaftar 2 hari yang lalu
3
me you
Terdaftar 6 hari yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi