เมื่อฉันค้นหาใน StackOverflow ฉันมีวิธีแก้ปัญหาหลายอย่างเพื่อรับค่าจากองค์ประกอบอินพุต
ฉันลองวิธีการด้านล่าง
วิธีที่ 1:
return serialNumberTextField.getAttribute('ng-model')
.then((text)=>{return serialNumberTextField.evaluate(text);})
.then((evalText) =>{ console.log("serial number in eval method :"+evalText);
return evalText;})
วิธีที่ 2:
return serialNumberTextField.getAttribute('value')
.then( (text) =>{
console.log("serial number in method :"+text);
return text;})
เมื่อพิมพ์ด้วยสองวิธี มันจะพิมพ์ค่าที่แน่นอน เช่น:- วิธีที่ 1: หมายเลขซีเรียลในวิธี eval :assetDF1534 method2: หมายเลขซีเรียลในวิธี :assetDF1534
ฉันใช้ค่าตอบแทนในสองแห่ง
อันดับแรก: ตัวแปร 'assetName' ถูกจับได้จากวิธีการด้านบนเพื่อรับหมายเลขซีเรียล
assetNameTextField.clear().sendKeys(assetName);
ที่สอง:
element(by.xpath("//a[contains(text(),'"+ assetName+"')]")).click();
อันดับแรก มันทำงานได้ดีและป้อนค่า 'assetDF1534' ในช่องข้อความชื่อสินทรัพย์ แต่เมื่อพูดถึงการสร้างองค์ประกอบเว็บโดยใช้ชื่อสินทรัพย์ล้มเหลว เนื่องจากให้ 'assetName' เป็นสัญญาแทนมูลค่า เมื่อฉันพิมพ์ 'assetName' ในวิธีการเหล่านั้นซึ่งแสดงตามสัญญาด้านล่าง:
ชื่อสินทรัพย์ที่จะป้อนในตัวกรองคือ :ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"} ชื่อสินทรัพย์คือ :ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"}
Sendkeys จัดการสัญญาเนื่องจากเป็นวิธีการไม้โปรแทรกเตอร์ แต่ไม่ใช่ในกรณีอื่น จะได้รับคุณค่าแทนคำสัญญาได้อย่างไร?