driver.findElement(By.id(id)).click()はchromeだけで動作する
ほかのブラウザでも動作するが、コンポーネントがアクティブになる(?)ぐらいで、クリックイベントまでは実行されない
FireFoxやIEは
ボタンなどの場合:driver.findElement(By.id(id)).sendkey("\n")
チェックボックスなどの場合:driver.findElement(By.id(id)).sendkey(" ")
で解決。
お後がよろしいようで。
このサイトの情報かなり活用させて頂いてます。
返信削除IEでもclick()が効く環境と効かない環境があって、
困ってます。公式な情報にclick()はIEでは使えん!と書いてあるのですかね。
いっそ、sendKeys(Keys.ENTER)に置き換えようかなぁと思案していますが…
遅くなりました、すみません。
削除>公式な情報にclick()はIEでは使えん!と書いてあるのですかね。
公式では見たことはないですね。世間的にも認知されている動作不備なので、ググったらいろいろ出てきます。
http://stackoverflow.com/questions/5574802/selenium-2-0b3-ie-webdriver-click-not-firing
ただ、2.22からIEDriverServerが採用され、動作に違いが出ているはずなので、それで解消されている可能性はあります。(私は未検証です、、)
今のところは
public void click(WebElement ele) {
if (dr instanceof FirefoxDriver) {
ele.sendKeys("\n");
} else if (dr instanceof InternetExplorerDriver) {
ele.sendKeys("\n");
} else {
ele.click();
}
}
こうやって解決しています。
ele.click()と違い、 ele.sendKeys("\n")は実際にマウスの動作をトレースしているわけではないので、コンポーネントに対するオンマウスイベントなどは実行されないので、注意が必要です。
追記です。
削除IEでもdlタグにはWebElement#clickが実行できることは確認しています。
もしかして、クリック対象のタグによって、
>IEでもclick()が効く環境と効かない環境があって、
という現象が発生していませんか?
違うならもっと詳しく知りたいですね、OSの種類、IEのバージョン、bit数など、教えていただけたらうれしいです。
また、シンプルなWeb画面ほど、素直に動作するようです。
なるほど、ご丁寧にありがとうございますm(__)m
返信削除WinXP+IE7、Win7+IE9は大体いけます。buttonタグでもaタグでも。
しかしながら、WinXP+IE8(OKな環境もあり)はダメですねぇ
。
謎です…
とりあえずIEDriverServerを使用したWindXP+IE8環境では
削除dlタグに引き続き、divタグへのクリックも
WebElement#click();
が正常稼動することを確認しました。
ついでにSeleniumのバージョンはいくつですか?
また、よかったら教えてください。
2.23を使っています。.1は流石にパスです(;^ω^)
返信削除