2016-04-24 5 views
0

私はC#(デフォルトブラウザ - FireFoX)でセレンを使用しています。セレン - イベントリスナー(C#)でポップアップを処理する方法

不明な時間の後にポップアップメッセージが表示されるサイトがあります(ある場合)。

ポップアップが表示される画面がわからないため、待機またはスリープを使用できません。各ページで 'try-Catch'を使用することはあまりスマートではありません....

私が考えた解決策は、 。もちろん、リスナーはスレッド内になければならず、各テストにはスレッドの配列があり、イベントとxpath/IDのリストを取得できます。

誰もこのようなことをしましたか?それを手助けするサンプル/記事/チュートリアルはありますか?

10倍、

ギル古い中国proverb

答えて

0

思考、そのような質問に直面し、私はSeleniumHQのgithubのリポジトリに移動し、testsを見てください。

警告が表示されないときにあまりにも多くの時間を無駄にしないように、待機時間を短くします。ページが開くとき、またはテストがそのページを離れる直前に、ポップアップ処理コードを呼び出すことができます。アプリケーションの動作に依存します。

0

私は単純に自動的に警告する例外を警告を受け入れ、黙らせるFirefoxDriverをオーバーライドします:

var driver = new FirefoxDriverEx(); 
driver.Navigate().GoToUrl("http://the-internet.herokuapp.com/javascript_alerts"); 
driver.FindElementByXPath("//button[.='Click for JS Alert']").Click(); 
string text = driver.FindElementById("result").Text; 
+0

クール:ここ

class FirefoxDriverEx : FirefoxDriver { private static DesiredCapabilities Capabilities() { var capa = DesiredCapabilities.Firefox(); capa.SetCapability(CapabilityType.UnexpectedAlertBehavior, "accept"); return capa; } public FirefoxDriverEx() : base(Capabilities()) { } protected override Response Execute(string driverCommandToExecute, Dictionary<string, object> parameters) { try{ return base.Execute(driverCommandToExecute, parameters); } catch (UnhandledAlertException) { return base.Execute(driverCommandToExecute, parameters); } } } 

は使用例です。私はC#とJavascriptのセレンライブラリで* UnexpectedAlertBehavior *しか見ることができません。 – MikeJRamsey56

関連する問題