回答:
driver.find_element_by_id('foo').clear()
使用できます
webElement.clear();
この要素がテキスト入力要素の場合、これにより値がクリアされます。
このイベントによって発生するイベントは、予想したものとは異なる場合があることに注意してください。特に、キーボードイベントやマウスイベントは発生しません。キーボードイベントを確実に発生させたい場合は、などの使用を検討してくださいsendKeys(CharSequence)
。例えば:
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
または:
webElement.sendKeys(Keys.CONTROL + "a");
webElement.sendKeys(Keys.DELETE);
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
私の奇妙なケースでのみ助けられました
.clear()が機能しないフィールドに遭遇しました。最初の2つの回答を組み合わせて使用すると、このフィールドでうまくいきました。
from selenium.webdriver.common.keys import Keys
#...your code (I was using python 3)
driver.find_element_by_id('foo').send_keys(Keys.CONTROL + "a");
driver.find_element_by_id('foo').send_keys(Keys.DELETE);
;
ためにもう一度?
;
Pythonでは@ surfer190 は必要ありません。誤って追加しました。良いキャッチ。
Java用
driver.findelement(By.id('foo').clear();
または
webElement.clear();
この要素がテキスト入力要素の場合、これにより値がクリアされます。
一般的な構文です
driver.find_element_by_id('Locator value').clear();
driver.find_element_by_name('Locator value').clear();
clear()の単純な呼び出しでは、対応するinput / textareaコンポーネントがまだ古い値を持っていることがDOMに表示されるため、そのコンポーネントに対する後続の変更(たとえば、コンポーネントに新しい値を入力する)は時間内に処理されません。
セレンのソースコードを見ると、clear()メソッドが次のコメントで文書化されていることがわかります。
/ **この要素がテキスト入力要素の場合、これは値をクリアします。他の要素には影響しません。テキスト入力要素は、INPUTおよびTEXTAREA要素です。このイベントによって発生するイベントは、予想したものとは異なる場合があることに注意してください。特に、キーボードイベントやマウスイベントは発生しません。キーボードイベントが確実に発生するようにするには、バックスペースキーで{@link #sendKeys(CharSequence ...)}のようなものを使用することを検討してください。変更イベントを確実に取得するには、タブキーを使用して{@link #sendKeys(CharSequence ...)}を呼び出すことを検討してください。* /
したがって、この有用なヒントを使用してinput / textarea(すでに値を持つコンポーネント)をクリアし、それに新しい値を割り当てると、次のようなコードが得られます。
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;
}
このコードがPythonではなくJavaであることを申し訳ありません。また、この投稿を長くしすぎる「waitUntilPageIsReady()」メソッドをスキップする必要がありました。
これがSeleniumの旅に役立つことを願っています!
driver.find_element_by_xpath("path").send_keys(Keys.CONTROL + u'\ue003')
FireFoxでうまく機能しました