Cara mendapatkan nilai teks dari elemen input di busur derajat alih-alih janji

Ketika saya mencari di StackOverflow saya mendapat banyak solusi untuk mendapatkan nilai dari elemen input.

Saya mencoba metode di bawah ini

metode 1:

 return serialNumberTextField.getAttribute('ng-model')
                .then((text)=>{return serialNumberTextField.evaluate(text);})
                .then((evalText) =>{ console.log("serial number in eval method :"+evalText);
                        return evalText;})

metode 2:

            return serialNumberTextField.getAttribute('value')
            .then( (text) =>{
                   console.log("serial number in method :"+text);
                     return text;})

Saat mencetak dalam dua metode, ia mencetak nilai yang tepat misalnya: - metode1: nomor seri dalam metode eval :assetDF1534 metode2: nomor seri dalam metode :assetDF1534

Saya menggunakan nilai pengembalian di dua tempat

tempat pertama: Variabel 'assetName' diambil dari metode di atas untuk mendapatkan nomor seri.

assetNameTextField.clear().sendKeys(assetName);

tempat kedua:

element(by.xpath("//a[contains(text(),'"+ assetName+"')]")).click();

pertama, ini berfungsi dengan baik dan masukkan nilai 'assetDF1534' di bidang teks nama aset tetapi ketika membuat elemen web menggunakan nama aset gagal karena memberikan 'assetName' sebagai janji, bukan nilai. ketika saya mencetak 'assetName' dalam metode tersebut ditampilkan sebagai janji seperti di bawah ini:

nama aset yang dimasukkan dalam filter adalah :ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"} nama aset adalah :ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"}

Sendkeys menangani janji karena ini adalah metode busur derajat tetapi tidak dalam kasus lain. Bagaimana cara mendapatkan nilai alih-alih janji?


person Sarada Akurathi    schedule 10.12.2019    source sumber


Jawaban (2)


Anda harus menyelesaikan janji tersebut alih-alih mengembalikannya. Ini seharusnya berhasil.

function getSerialNumber() {
  return new Promise((resolve, reject) => {
    serialNumberTextField.getAttribute('value').then((text) => {
        resolve(text);
      })
      .catch((err) => {
        reject(err);
      });
  });
}
person tehbeardedone    schedule 10.12.2019
comment
Hai, terima kasih atas waktu dan jawaban Anda, ketika saya mencoba solusi di atas, saya mendapat kesalahan kompilasi setelah (resolve, reject) dan akhir braces - person Sarada Akurathi; 11.12.2019
comment
@SaradaAkurathi maaf soal itu. Saya lupa bagian =›. Saya mengedit cuplikan kode di atas. Seharusnya berhasil kali ini. - person tehbeardedone; 12.12.2019

Temukan solusinya seperti di bawah ini:

definisi fungsi

this.getSerialNumber = function()
    {
       return serialNumberTextField.getAttribute('value')
                .then( (text) =>{ return text; })

    };

panggilan fungsi

this.editAsset = async function(data)
    {
        this.getSerialNumber()
            .then( (serialNumber) =>{
                data.serialNumber = serialNumber;
            });
    }

nilai yang dikembalikan dari getSerialNumber() ditetapkan ke nilai menggunakan .then(). Kita dapat menyelesaikan janji tersebut menggunakan .then()

person Sarada Akurathi    schedule 11.12.2019