Basit bir clear () çağrısıyla DOM'da karşılık gelen giriş / textarea bileşeninin hala eski değeri vardır, bu nedenle bu bileşen üzerinde aşağıdaki değişiklikler (örn. Bileşeni yeni bir değerle doldurmak) zaman içinde işlenmeyecektir.
Selenyum kaynak koduna bakarsanız, clear () - yönteminin aşağıdaki yorumla belgelendiğini göreceksiniz:
/ ** Bu öğe bir metin giriş öğesiyse, bu değer silinir. Diğer elementler üzerinde etkisi yoktur. Metin giriş öğeleri INPUT ve TEXTAREA öğeleridir. Bu etkinlik tarafından tetiklenen etkinliklerin beklediğiniz gibi olmayabileceğini unutmayın. Özellikle, herhangi bir klavye veya fare olayını tetiklemiyoruz. Klavye olaylarının tetiklendiğinden emin olmak için geri tuşu ile {@link #sendKeys (CharSequence ...)} gibi bir şey kullanmayı düşünün. Bir değişiklik etkinliği aldığınızdan emin olmak için, sekme tuşuyla {@link #sendKeys (CharSequence ...)} çağrısıyla takip etmeyi düşünün. * /
Bu nedenle, bir girdi / metin alanını (zaten bir değeri olan bileşen) temizlemek ve bu değere yeni bir değer atamak için bu yararlı ipucunu kullanarak, aşağıdaki gibi bir kod alırsınız:
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;
}
Bu kodun Python değil Java olduğu için üzgünüm. Ayrıca, bu yazı yol çok uzun yapacak ek bir "waitUntilPageIsReady () - yöntemi atlamak zorunda kaldı.
Bu Selenium ile yolculuğunuzda size yardımcı olacağını umuyoruz!