WebElement.clear() ทำอะไรกับกล่องข้อความ?

ฉันเพิ่งพบปัญหาในการทำงานกับซีลีเนียมซึ่งการโทร clear() ในกล่องข้อความที่กำหนดเองทำให้เกิดปัญหาเมื่อป้อนข้อความในการทดสอบในภายหลัง กล่องข้อความจะตรวจสอบ (JavaScript) browserEvents โดยเฉพาะ keyDown เหตุการณ์ ฉันพยายามค้นหาว่า clear() ทำอะไรเพื่อดูว่าสิ่งนั้นอาจส่งผลกระทบต่อสิ่งต่างๆ หรือไม่ แต่ดูเหมือนจะไม่พบข้อมูลเฉพาะเจาะจงใดๆ

แหล่งที่มาสำหรับการเชื่อมโยง Selenium Java แสดงว่า clear() ไม่ได้ใช้การจำลองแป้นพิมพ์หรือเมาส์ เพื่อล้างข้อความออกจากกล่องข้อความ แล้วมันทำอะไรกันแน่?


person joshin4colours    schedule 01.03.2013    source แหล่งที่มา


คำตอบ (2)


เมธอด clear() ดำเนินการ "Automation Atom" ซึ่งเป็นฟังก์ชัน JavaScript ที่มีวัตถุประสงค์เพื่อ จัดเตรียมหน่วยพื้นฐานที่เล็กที่สุดของฟังก์ชันการทำงานอัตโนมัติสำหรับเบราว์เซอร์ ในกรณีของ clear() ฟังก์ชันนั้นจะตั้งค่าคุณสมบัติ value ขององค์ประกอบเป็นสตริงว่าง ('') จากนั้นจึงเริ่มการทำงานของเหตุการณ์ onchange บนองค์ประกอบ ฟังก์ชันอะตอมที่คุณสนใจคือ bot.action.clear()

person JimEvans    schedule 02.03.2013
comment
สวัสดี ฉันขุดโพสต์นี้ออกไปเพราะฉันต้องการดูซอร์สโค้ดของ WebElement.clear() แต่ลิงก์ที่คุณให้ไว้ใช้งานไม่ได้อีกต่อไป ฉันจะขอบคุณอย่างไม่มีสิ้นสุดหากคุณสามารถบอกฉันได้ว่าต้องดูที่ไหนตั้งแต่ฉันติดขัด... - person DCzo; 28.12.2017
comment
ไปที่ wiki สำหรับ Automation Atoms มีลิงค์ด้านล่างที่จะพาคุณไปยังไฟล์บิลด์ - person MikeJRamsey56; 31.01.2018

นี่คือสิ่งที่ clear() จะทำอย่างแน่นอน ฟังก์ชั่นจะล้างค่ากล่องข้อความและเปิดใช้งานกล่องข้อความ ก่อนที่จะป้อนข้อความในช่องข้อความ เราจำเป็นต้องล้างช่องข้อความและจะเปิดใช้งาน หากเราไม่ใช้ clear () เราจะไม่สามารถป้อนค่าใดๆ ในช่องข้อความโดยใช้ซีลีเนียมได้

driver.find_element_by_xpath(xpath).clear()
driver.find_element_by_xpath(xpath).send_keys("data")
person Kv.senthilkumar    schedule 02.03.2013
comment
คำตอบนี้ไม่ถูกต้อง คุณไม่จำเป็นต้อง clear() กล่องข้อความเพื่อเปิดใช้งาน คุณจะต้องใช้ clear() เพื่อล้างข้อความที่มีอยู่ในกล่องข้อความก่อนที่จะป้อนค่าใหม่ คำตอบของจิมนั้นถูกต้องและมีรายละเอียดทางเทคนิคมากกว่า - person JeffC; 18.07.2017