2017-01-03 13 views
0

こんにちは私はMozillaのタスクを自動化するためにSelenium Web DriverとGeckodriverを使用しています。 C#Geckodriver/Selenium 3.0 - Mozilla 47.0.1自体が停止する

  • インポートファイルボタンの

    • アカウントのログイン
    • クリックして(問題はそれ以降表示されます):GeckodriverはMozillaののインスタンスをlauches は、問題はありません。
    • 次のコードはコンパイルされません。

    問題:Mozillaが終了し、GeckodriverがMozillaを再起動し、無限ループのような同じ手順(アカウントのログイン、ボタンのクリックなど)を行います。

    私はそれを修正したいと思います、どんな助けも大歓迎です。ありがとうございました !

    FirefoxProfile fox = new FirefoxProfile(); 
    fox.SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream;application/csv;text/csv;application/vnd.ms-excel;"); 
    fox.SetPreference("browser.helperApps.alwaysAsk.force", false); 
    fox.SetPreference("browser.download.folderList", 2); 
    fox.SetPreference("browser.download.dir", temp); 
    using (var driver = new FirefoxDriver(new FirefoxBinary(@"C:\Mozilla Firefox\firefox.exe"), fox)) 
          { 
           driver.Manage().Window.Maximize(); 
           driver.Navigate().GoToUrl("//"); 
           //Click on buttons without problems 
           System.Threading.Thread.Sleep(5000); 
           //Import file 
           var inputUpload = driver.FindElementById("uploadedPrevisionsFileId-button"); 
           inputUpload.Click(); 
           //I put Thread.Sleep to wait until the element appears 
           System.Threading.Thread.Sleep(3000); 
           SendKeys.Send("C:/Test.xls"); 
           SendKeys.Send("{ENTER}"); 
           //HERE, Mozilla stops but I can see the file has been imported 
           //Code ... 
          } 
    //And it restarts a new instance of Mozilla which does the same thing 
    
  • 答えて

    0

    アップロードコードが混乱します。他のブラウザでもこの戦略を成功させましたか?これは、これと同様のブラウザウィンドウからファイルをアップロードするのですか? enter image description here

    もしそうなら、セレンはupload要素のSendKeys()を呼び出すだけでファイルIOを処理します。 inputUpload.SendKey("C:/Test.xls");

    ブラウザを閉じる原因になるのは不明ですが、NUnitなどのテストフレームワークを使用することをお勧めしますか?そうすれば、usingブロックを回避し、フレームワークにtestSetupとtearDownを管理させることができます。

    +0

    申し訳ありません申し訳ありませんプログラムを最小限に抑えようとしました。それで、Windowsのダイアログが表示されますが、ファイルを開いてから別のボタン「インポート」をクリックする必要があります。しかし、私のプログラムは、私が単独でコンパイルしているときに動作します(私は、おそらくこのコードを妨害している他の関数を持っています)。それでも、それは奇妙です。最後に私のプロジェクトを2つの部分に分けて動作させています。私の質問について考える時間をとってくれてありがとう – Ketedaro

    関連する問題