2015-04-21 2 views
0

У меня есть вопрос о ссылках на файлы exe для нескольких браузеров в селене NUnit с C#. Я добавил дополнительный код, чтобы мои тесты запускались в каждом браузере, но каждый раз, когда я запускаю тесты, я получаю ошибку: OpenQA.Selenium.DriverServiceNotFoundException. Мой вопрос в том, есть ли вообще добавить ссылку, не указывая путь? Я не думаю, что я смог бы добавить путь к текущему коду, который у меня есть, без рефакторинга того, что у меня есть. Заранее благодарны за Вашу помощь.Selenium C# множественное тестирование браузера exe ссылки

испытательного стенда

[TestFixture(typeof(FirefoxDriver))] 
[TestFixture(typeof(InternetExplorerDriver))] 
[TestFixture(typeof(ChromeDriver))] 
public class CustomerLogin<TWebDriver> where TWebDriver : IWebDriver, new() 
{ 
    private IWebDriver driver; 
    private string url; 

    [TestFixtureSetUp] 
    public void FixtureSetUp() 
    { 
     url = System.Configuration.ConfigurationManager.AppSettings["homeUrl"]; 
     this.driver = new TWebDriver(); 
     driver.Navigate().GoToUrl(url); 
     driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); 
    } 

Использования заявления

using System; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Linq; 
using System.Text; 
using NUnit.Framework; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.IE; 
using OpenQA.Selenium.Chrome; 
using OpenQA.Selenium.Support.UI; 

ответ

0

После внесения некоторых изменений в код я могу запустить все тесты в больших трех браузерах. Мне пришлось добавить Chrome.exe и IE.exe в папку bin \ Debug (The one with the WebDriver.dll). Вот мои изменения в моем коде.

тестовые

[TestFixture(typeof(FirefoxDriver))] 
[TestFixture(typeof(InternetExplorerDriver))] 
[TestFixture(typeof(ChromeDriver))] 
public class CustomerLogin<TWebDriver> where TWebDriver : IWebDriver, new() 
{ 
    private IWebDriver driver; 
    private string url; 
    [SetUp] 
    public void SetUp() 
    { 
     this.driver = new TWebDriver(); 
     url = System.Configuration.ConfigurationManager.AppSettings["homeUrl"]; 
     driver.Navigate().GoToUrl(url); 
     driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); 
     //Finding the customer login link and clicking it 
     driver.FindElement(By.Id("Homepage_r2_c14")).Click(); 
    } 
    [TearDown] 
    public void TearDown() 
    { 
     driver.Quit(); 
    } 
} 
1

Я считаю, что вы можете установить путь с чем-то вроде этого;

System.setProperty("webdriver.ie.driver", "C:\my\path\to\IEDriverServer.exe"); 
    System.setProperty("webdriver.firefox.driber", "C:\my\path\to\FFDriver.exe"); 

Или, лучшее решение, на мой взгляд, чтобы добавить драйверы для вашего проекта и изменить сборку таким образом, что они в конечном итоге в папку перетаскивания. Код выше отлично подходит для вашей локальной системы, но не переносится. Большинство решений для автоматизации предназначены для «работы из коробки», которая требует, чтобы вы упаковывали свои зависимости в корзину.

Чтобы упаковать драйверы с вашей сборкой; добавьте в проект папку «Драйверы» (щелкните правой кнопкой мыши по решению -> добавить -> новую папку), затем добавьте туда исполняемые файлы (щелкните правой кнопкой мыши папку, добавьте существующий элемент). Теперь, когда вы можете увидеть драйвер exe в Solution Explorer правой кнопкой мыши и выбрать свойства, в разделе «Копировать в выходной каталог» выберите «Копировать, если новый».

+0

Великое предложение, как бы реализовать ваше предложение? это именно то, что я хочу сделать. – DEnumber50

+0

@ DEnumber50 вместо этого ставит комментарий. – evanmcdonnal

+0

Я поместил папку и изменил ее свойства. Что мне нужно добавить в мой код для распознавания этих exe-файлов? Я получаю сообщение об ошибке «System.Reflection.TargetInvocationException». Та же самая ошибка сверху также актуальна. – DEnumber50

Смежные вопросы