Coded UI - การควบคุมอื่นกำลังบล็อกการควบคุม

ฉันยังใหม่กับการทดสอบอัตโนมัติ Coded UI ในแอปพลิเคชัน MVVM silvelight ของฉัน ทำการทดสอบอัตโนมัติสำหรับปุ่มไฮเปอร์ลิงก์และพบข้อผิดพลาดด้านล่าง (ดูภาพ):

ป้อนคำอธิบายรูปภาพที่นี่

ติดตามสแต็ก:

ที่ Microsoft.VisualStudio.TestTools.UITest.Playback.Engine.IScreenElement.MouseButtonClick (Int32 x, Int32 y, Int32 nButton, Int32 fEnsureVisible, สตริง bstrKeyModifiers) ที่ Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.MouseButtonClick (Int32 x, Int32 y, ปุ่ม MouseButtons, ModifierKeys modifierKeys, Int32 ให้แน่ใจว่ามองเห็นได้) ที่ Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.MouseButtonClick (Int32 x, Int32 y, ปุ่ม MouseButtons, ModifierKeys modifierKeys) ที่ Microsoft.VisualStudio.TestTools.UITesting.UITestControl คลิก (ปุ่ม MouseButtons, ModifierKeys modifierKeys, PointrelativeCoordinates)

ข้อความแสดงข้อผิดพลาด: ตัวควบคุมอื่นกำลังบล็อกตัวควบคุม โปรดทำให้มองเห็นการควบคุมที่ถูกบล็อกแล้วลองดำเนินการอีกครั้ง รายละเอียดเพิ่มเติม: TechnologyName: 'Silverlight' ControlType: 'Image' แหล่งที่มา: '../Assets/Images/add.pn

กรุณาช่วย..!!


person Nilesh Sarvaiya    schedule 18.07.2013    source แหล่งที่มา
comment
ในรหัสของคุณ คุณกำลังระบุพิกัดสำหรับการควบคุม คุณลองลบพิกัดแล้วลองไหม   -  person Krishna Kokila    schedule 23.08.2018


คำตอบ (2)


สิ่งนี้สามารถเกิดขึ้นได้เมื่อมีการควบคุมที่โปร่งใสซ้อนทับบนการควบคุมที่คุณพยายามคลิก - ขั้นแรก ตรวจสอบให้แน่ใจว่าไม่มีหน้าต่างอื่นใดบดบังสิ่งที่คุณพยายามทำงานด้วย จากนั้นคุณสามารถดำเนินการเวอร์ชัน (เชื่อถือได้น้อยกว่าเล็กน้อย) Mouse.Click() ซึ่งคลิกบนจุดบนหน้าจอแทนที่จะคลิกที่ตัวควบคุม โดยส่งผ่าน Point ไปที่วิธี .Click -

Mouse.Click(uIAssertsImagesaddpngImage.GetClickablePoint());

ข้อเสียของการทำเช่นนี้คือ ถ้ามีหน้าต่างอื่นหรือปุ่มควบคุมด้านบนของปุ่มที่คุณพยายามคลิก คุณจะต้องคลิกมันแทน นั่นคือจุดที่สูญเสียความน่าเชื่อถือเข้ามา

person Nick Raverty    schedule 03.09.2013

ใช้ Mouse.Hover() เพื่อแสดงการเข้าถึงตัวควบคุม จากนั้น Mouse.MoveScrollWheel() เพื่อย้ายตำแหน่งของตัวควบคุมไปยังตำแหน่งที่สามารถจัดการได้

ความเป็นมา: นี่เป็นผลลัพธ์ทางอินเทอร์เน็ตครั้งแรกบน SO สำหรับ FailedToPerformActionOnBlockedControlException ที่เกี่ยวข้องกับการทำงานอัตโนมัติของเบราว์เซอร์ (ตรงข้ามกับแอปพลิเคชันเดสก์ท็อป) ดังนั้นฉันจะเพิ่มโซลูชันของฉันที่นี่ มันไม่เกี่ยวข้องกับ Silverlight แต่ฉันไม่แน่ใจว่ามันสำคัญหรือไม่

สำหรับฉัน ฉันจะพยายามจัดการองค์ประกอบบนเพจ แต่องค์ประกอบนั้นอยู่ "ใต้" หน้าจอ การใช้วิธี CodedUI หลายวิธีที่ควรคว้าการควบคุม (เช่น .SetFocus()) จะคว้าการควบคุมที่เหมาะสม อย่างไรก็ตาม ระบบจะนำตัวควบคุมไปที่ส่วนล่างของหน้าจอ โดยที่แถบกึ่งโปร่งใสที่ด้านล่างของหน้าจอจะปิดกั้นตัวควบคุม ฉันต้องการปรับตำแหน่งที่จะแสดงการควบคุมบนหน้าจอ ฉันพยายามใช้ Mouse.MoveScrollWheel() แต่การกระทำของเมาส์ไม่เกิดขึ้น การใช้ Keyboard.SendKeys("{PGDN}") จะไม่ทำงานเช่นกัน เนื่องจากโฟกัส CodedUI "ติดอยู่" ในตัวควบคุม แอปพลิเคชันเฉพาะนี้ใช้หน้าต่างเบราว์เซอร์สามหน้าต่าง (ไม่ใช่แท็บ) ที่เปิดพร้อมกัน ดังนั้นการโฟกัสของเมาส์จึงไม่เคยไปปรากฏบนหน้าจอโดยไม่มีสิ่งใดมากระตุ้น ในที่สุดฉันก็จัดการทั้งหมดนี้ได้โดยใช้รหัสต่อไปนี้

System.Drawing.Point location = obj.BoundingRectangle.Location;
Mouse.Hover(location);
Mouse.MoveScrollWheel(-2);
person petah    schedule 06.06.2018