web-dev-qa-db-ja.com

selenium clear()コマンドは要素をクリアしません

Javaでしばらくの間Seleniumスクリプトを書いています。今日、私は非常に奇妙な問題に遭遇しました。

ここに問題があります:webelement.clear()メソッドを使用してテキストフィールドをクリアしました。後で次のコマンド(クリックイベント)を実行すると、以前にクリアしたテキスト領域に、以前に入力された値が入力されます。

コードスニペットは次のとおりです。

mobileNumField.get(0).clear();
Thread.sleep(4500);
emailAddress.get(0).click();
emailAddress.get(0).clear();
Thread.sleep(4500);
emailAddress.get(0).sendKeys(Keys.TAB);
7

入力しようとしているフィールドのautocomplete属性がオンに設定されている可能性があります。 [参照]

行の実行時にclear()が機能する場合、これはWebドライバー固有の問題ではないと言っても安全です。

作業中のページセクションのHTMLスニペットを表示できると便利です。

可能なデバッグ領域:

  • Java script executor を使用して、ページのロード時にautocomplete属性を強制的に削除します
    • ドライバレベルでオートコンプリート設定をオフにします。ソリューションは使用するドライバーによって異なると思います。

      幸運を!

      PS:それらThread.sleep(s)はお勧めできません。

  • 5
    iamkenos

    要素がその値を保持する正確な理由はわかりませんが、「Ctrl + A」キーと「Delete」キー入力を要素に送信することで、別のクリーンアップを試すことができます。

    emailAddress.sendKeys(Keys.chord(Keys.CONTROL,"a", Keys.DELETE));
    
    3
    AutomatedOwl

    私にとってはpythonで機能した別の方法ですが、エレガントとは言えません:

    for _ in range(4):
        risk_percentage.send_keys(Keys.BACK_SPACE)
    
    0
    surfer190

    同様の問題に直面しました。入力フィールドはクリアされますが、エラーメッセージは更新されません。一部の入力フィールドは、文字を入力して削除した場合にのみ正しく機能するようです。

    element.sendKeys(text);
    element.sendKeys(Keys.SPACE, Keys.BACK_SPACE);
    
    0
    Stepa_ua