2017-01-03 5 views
0

Привет, я использую Selenium Web Driver и Geckodriver для автоматизации задачи Mozilla. Когда Geckodriver lauches экземпляр Mozilla, нет никаких проблем:C# Geckodriver/Selenium 3.0 - Mozilla 47.0.1 останавливается сам

  • счета Войти
  • Нажмите на кнопки
  • Импорт файлов (Проблема появляется после этого).
  • Следующий код не скомпилирован.

Проблема: 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

Если selenium обрабатывает файл IO, просто вызывая SendKeys() на элементе upload. inputUpload.SendKey("C:/Test.xls");

Я не уверен, что приведет к закрытию браузера, но могу ли я предложить использовать среду тестирования, такую ​​как NUnit? Таким образом, вы можете избежать блока using и позволить инфраструктуре управлять testSetup и tearDown.

+0

Извините, я попытался свести к минимуму мою программу. Итак, это диалоговое окно Windows, которое появляется, но я должен открыть файл, а затем нажать на кнопку «импорт» на веб-сайте. Однако моя программа работает, когда я компилирую ее в одиночку (я имею в виду, что у меня есть другие функции, которые могут мешать этому коду). Тем не менее, это странно, что угодно. Наконец, я разделил свой проект на 2 части, и он работает. Спасибо, что нашли время подумать о моем вопросе – Ketedaro