WebDriverは、特定の要素が確実に表示されているのに表示されないことを教えてくれますが、IEでのみ表示されます-FirefoxとChromeは正常に動作します。コードのブロックには、ラジオボタンやその他の入力が含まれます。いくつかの入力は確かに隠されていますが、これらは私が対話しようとしているものではありません。このラジオボタンを選択しようとしています:
<input type="radio" onclick="onClickBranching()" id="rbOnCompletePres" value="2" name="rbBranchType">
ロケーターのIDを使用しているので、基本的にはBy.cssSelector("input#rbOnCompletePres")
。findElementコマンドがFirefoxとIEの両方で機能することを確認できます。また、要素の属性をIEで印刷して、正しいボタンが見つかっていることを確認しました。Firefoxで見つけたのと同じ、正しいボタンを確実に見つけています。要素がIEに表示されないことを確信しているだけです。
問題の要素の上下にいくつかの非表示の要素があります。adiv
とalabel
は、永続的に非表示にするか、他のラジオボタンが選択されたときにアクティブになります。それらはstyle="display: none"
属性として設定することで非表示になります。
WebDriver(特にIEのみ)が、近くにある他の要素に基づいて、表示されている要素が表示されていないと判断する理由はありますか?
1つの回避策を使用して要素を表示するJSを挿入しようとしましたが、2つの問題が発生しました。1つは、スタイル属性を適切に削除しているかどうかわからないこと、もう1つは、WebDriverによって報告された要素であるということです。 、実際には非表示にする属性がないため、設定を解除するものはありません。
私が試したもう1つの回避策は、可視性を無視するため、JSを使用してクリックを実行することでした。私はそれが好きではありません-特に私の次のアクションは、間違いなく同じ理由で、WebDriverも非表示であると考えるテキストフィールドに入力することであるためです。
この動作の説明はありますか?それとも、IEがおかしいと思って、JSを使用する必要がありますか?ありがとう。