Dengan panggilan jelas (), muncul di DOM bahwa komponen input / textarea yang sesuai masih memiliki nilai yang lama, sehingga setiap perubahan berikut pada komponen itu (misalnya mengisi komponen dengan nilai baru) tidak akan diproses dalam waktu.
Jika Anda melihat kode sumber selenium, Anda akan menemukan bahwa metode clear () - didokumentasikan dengan komentar berikut:
/ ** Jika elemen ini adalah elemen entri teks, ini akan menghapus nilainya. Tidak berpengaruh pada elemen lain. Elemen entri teks adalah elemen INPUT dan TEXTAREA. Perhatikan bahwa acara yang dipecat oleh acara ini mungkin tidak seperti yang Anda harapkan. Secara khusus, kami tidak memecat acara keyboard atau mouse. Jika Anda ingin memastikan acara keyboard diaktifkan, pertimbangkan untuk menggunakan sesuatu seperti {@link #sendKeys (CharSequence ...)} dengan tombol backspace. Untuk memastikan Anda mendapatkan acara perubahan, pertimbangkan untuk mengikuti dengan panggilan ke {@link #sendKeys (CharSequence ...)} dengan tombol tab. * /
Jadi menggunakan petunjuk bermanfaat ini untuk menghapus input / textarea (komponen yang sudah memiliki nilai) DAN menetapkan nilai baru untuk itu, Anda akan mendapatkan beberapa kode seperti berikut:
public void waitAndClearFollowedByKeys(By by, CharSequence keys) {
LOG.debug("clearing element");
wait(by, true).clear();
sendKeys(by, Keys.BACK_SPACE.toString() + keys);
}
public void sendKeys(By by, CharSequence keysToSend) {
WebElement webElement = wait(by, true);
LOG.info("sending keys '{}' to {}", escapeProperly(keysToSend), by);
webElement.sendKeys(keysToSend);
LOG.info("keys sent");
}
private String escapeProperly(CharSequence keysToSend) {
String result = "" + keysToSend;
result = result.replace(Keys.TAB, "\\t");
result = result.replace(Keys.ENTER, "\\n");
result = result.replace(Keys.RETURN, "\\r");
return result;
}
Maaf untuk kode ini adalah Java dan bukan Python. Juga, saya harus melewatkan tambahan "waitUntilPageIsReady () - metode yang akan membuat posting ini terlalu panjang.
Semoga ini bisa membantu Anda dalam perjalanan Anda dengan Selenium!