2013-03-01 8 views
11

Geçenlerde selenyum ile çalışan bir sorunla karşılaştık. Metin kutusu (JavaScript) browserEvents, özellikle keyDown olayları için denetler. clear()'un, bir şeyleri etkileyip etkilemeyeceğini görmek için ne yaptıklarını anlamaya çalıştım, ancak herhangi bir özellik bulamıyorum.WebElement.clear() Metin Kutularına Ne Yapar? testte daha sonra metin girerken özel bir metin kutusu <code>clear()</code> çağıran sorunlarına neden nerede

Selenyum Java ciltleri shows that clear() does not use keyboard or mouse simulation için kaynak metin kutusundan metin temizlemek için. Peki tam olarak ne yapıyor?

cevap

25

clear() yöntem, bir tarayıcı için otomasyon işlevsellik küçük temel birim sağlamak amacıyla kullanıcının manuel olarak bir "Automation Atom" çalıştırır. clear() durumunda, bu fonksiyon boş bir dize (''), sonra elemana onchange olayı harekete karşı elemanın value özelliğini ayarlar. atomlar Bu cevap doğru değildir bot.action.clear()

+0

Merhaba, bu yazıyı kazdım çünkü WebElement.clear() 'ın kaynak koduna bakmak istedim, ancak sağladığınız bağlantılar artık aktif değil. Eğer nerede [Otomasyon Atom] için wiki takılıp ... – DCzo

+0

Git geldiğimden beri bakmamı söylerseniz ben sonsuz minnettar olacaktır (https://github.com/SeleniumHQ/selenium/wiki/Automation-Atoms). Altta sizi yapı dosyasına götüren bir bağlantı var. – MikeJRamsey56

4

İşte tam clear() öyle yapacağım. Bu işlev metin kutusu değerini temizleyecek ve metin kutusunu etkinleştirecektir. Metin alanına metin girmeden önce metin alanını temizlememiz ve onu etkinleştirmemiz gerekir. clear()'u kullanmazsak, selenyum kullanarak metin alanına herhangi bir değer giremeyiz.

driver.find_element_by_xpath(xpath).clear() 
driver.find_element_by_xpath(xpath).send_keys("data") 
+0

olduğu içinde ilgilendiğiniz çalışır. Bunu etkinleştirmek için metin kutusunu temizlemek zorunda değilsiniz. Yeni bir değer girmeden önce metin kutusundaki mevcut bir metni temizlemek için 'clear()' öğesini kullanırsınız. Jim'in cevabı doğru ve teknik olarak daha detaylı. – JeffC