最近、Selenium IDEコードをSelenium Webドライバーにエクスポートしました。IDEまたはSelenium Webドライバーが動作しない、またはまったくサポートしていないと主張しています。
現在、以前はSelenium IDEで機能していたのに、ボタンをクリックしてもWebドライバーで機能しない理由を見つけることに取り組んでいます。私のブラウザはFF 13で、OSはUbuntuです。
コードスニペット
WebElement loginButton = driver.findElement(By.name("submit"));
loginButton.click();
以前に試したことがあります
driver.findElement(By.name("submit")).click();
ただし、上記の行も失敗しました。要素は選択されていますが、希望どおりにログインしません。同様の問題を持つ他のページを見つけましたが、FirefoxではなくInternet Explorerに問題があるようです。私は問題について考えたくさえありませんIEは私に道を譲ります。
おかげで、
追伸私が書いたすべてのテストを失うことなく、Selenium IDEからSelenium Webdriverに移行するためのより良い方法のヒントは、この問題も解決する可能性があります。
要素が存在することが確実にわかっている場合、これを試してクリックをシミュレートできます-.Click()
が機能しない場合
driver.findElement(By.name("submit")).sendKeys(Keys.RETURN);
または
driver.findElement(By.name("submit")).sendKeys(Keys.ENTER);
注意すべき主要なことは、ボタンが有効かどうかです。あなたはまだそれらをクリックすることができ、何も倒れず、要素はそこにありますが、クリックする準備ができていないので、何もしません。
私はwebdriverを使用してきましたが、これを理解するためにほとんどの時間を費やしました!
次の方法は確実に機能するようです(私の環境では1つのボタンで!)
private void TryClick(By selector)
{
var wait = WaitUpTo(TimeSpan.FromSeconds(10));
var element = wait.Until(ExpectedConditions.ElementIsVisible((selector)));
//really important bit!
WaitUpTo(TimeSpan.FromSeconds(5))
.Until(d => element.Enabled);
element.Click();
}
あなたはそれを次のように使います
TryClick(By.XPath("//button[contains(.//*,'Some Text')]"));
こちらをご覧ください https://code.google.com/p/Selenium/issues/detail?id=6756 In crux
システムの表示設定を開いて、フォントサイズが100%に設定されていることを確認してください
私はFirefoxを使用していたので、何らかの理由で、過去2ヶ月間は動作していましたが、クリックコマンドを使用していませんでした。私の気持ちは、sendKeysを利用することで、このページは問題を解決しました。今、私はsendKeys(Keys.Enter)を使用しています
みなさん、すべての回答をありがとう!私は解決策を見つけました、私の質問で十分なコードを提供しなかったことがわかりました。
問題は[〜#〜] not [〜#〜] click()関数でしたが、代わりに私のプロジェクトで使用されるcas認証に関連していました。 Seleniumでは、IDE私のログインテストは、次の場所に「open」コマンドを実行しました。
/cas/login?service=https%1F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security
うまくいきました。テストをSelenium Webdriverにエクスポートし、その場所を自然に保存しました。 Selenium Webdriverのコマンドは、
driver.get(baseUrl + "/cas/login?service=https%1A%2F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security");
理由により、上記が失敗したことをまだ理解していない。に変更したとき、
driver.get(baseUrl + "MOREURL/");
クリックコマンドが突然機能し始めました...なぜこれが正確なのかを理解できれば、この回答を編集します。
注:会社の製品を保護するために上記で使用したURLを隠しています。
どちらのバージョンのコードでも問題はありません。これを引き起こしているものは何でも、それはそうではありません。
ロケーターをトリプルチェックしましたか?あなたの要素は間違いなくid = submitではなくname = submitを持っていますか?