0

テストに Selenium Web ドライバーを使用していますが、ログイン ページを通過できません。私が使用しているコード:

driver.Navigate().GoToUrl(baseURL + "URL");
driver.FindElement(By.Id("loginForm:username")).SendKeys("uName");
driver.FindElement(By.Id("loginForm:password")).SendKeys("pass");
driver.FindElement(By.Id("loginForm:login")).Click();

要素ロケーターは正しく、ログイン クリックは発生していますが、その後ログインしていませんが、ページがスタックしているだけです。エラーなどはありません。同じコードが IDE で機能しました。

私はIE9を使用していますが、設定も変更されています:

 var options = new InternetExplorerOptions();
            options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
            driver = new InternetExplorerDriver(options);

この問題を克服するためのアドバイスはありますか?

4

1 に答える 1

1

これは私によく起こりますが、それがあなたにとって同じ理由であるかどうかはわかりません。

ローカルでテストを実行すると、すべてのアクション(sendkeysなどclick)が非常に迅速に実行されます。ユーザーがフィールドとにテキストを入力するまで、ボタンを無効のloginForm:loginままにしておくことができます。そのため、クリック時にボタンがアクティブになっていない可能性があります。loginForm:usernameloginForm:passwordloginForm:login

したがって、loginForm:loginクリックする前に、明示的な待機を使用して要素IDが表示されているかどうかを確認することをお勧めします。 この手順は基本的には役に立ちませんが、パスワードテキストボックスフィールドに「キーを送信」し​​てから[送信]をクリックするまでの時間を無駄にするだけです。

また、簡単に確認するsleep 2ために、パスワードを入力した後、ログインボタンをクリックする前に、同様のことを行うこともできます(スクリプトを2秒間スリープさせる)。

最終的にこれをリモートマシンで実行する予定の場合は、上記の2つの手順を実行する必要はありません。マシン間の通信による時間遅延は、プロセス全体がスムーズに機能するのに十分です。

(LinkedInのログインページでも同じ問題が発生します。ユーザー名とパスワードを入力しないとログインボタンは無効になりますが、Webドライバーが各ステップを実行する速度です。クリックしてもログインボタンはアクティブになりません。)

于 2012-06-08T13:41:55.123 に答える