2015-11-04 2 views
0

Как часть тестирования автоматизации SharePoint, я пытаюсь открыть Internet Explorer в качестве другого пользователя с помощью System.Diagnostics.Process. Вот следующий код CЗапуск процесса

System.Diagnostics.Process p = new System.Diagnostics.Process(); 

// Domain and User Name: 
p.StartInfo.Domain = "MYDOMAIN"; 
p.StartInfo.UserName = "myusername"; 

// Command to execute and arguments: 
p.StartInfo.FileName = "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe"; 
p.StartInfo.Arguments = "http://url/AllItems.aspx"; 

// Build the SecureString password... 
System.String rawPassword = "thepassword"; 
System.Security.SecureString encPassword = new System.Security.SecureString(); 
foreach (System.Char c in rawPassword) 
{ 
    encPassword.AppendChar(c); 
} 

p.StartInfo.Password = encPassword; 

// The UseShellExecute flag must be turned off in order to supply a password: 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.CreateNoWindow = false; 

p.Start(); 

# Когда я запускаю этот автоматизированный тест на Visual Studio, возвращается информирующие меня, что тест прошел успешно, однако Internet Explorer не открывается.

Есть ли что-то в моем коде, которое мне не хватает, чтобы появилось окно? Перед запуском теста нет процесса iexplore.

ответ

1

положить двойные кавычки путь к файлу (поскольку он содержит пробелы) могут помочь:

p.StartInfo.FileName = "\"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe\"" 
         ^^              ^^ 

Кроме того, если ваше намерение состоит в том, чтобы начать это с процесса обслуживания или DLL работает в службе, такие как " SharePoint ", то этот код, вероятно, не запустит процесс на рабочем столе. Вам нужно установить рабочий стол "winsta0\\default" в информации о запуске.

+0

Благодарю вас за ваши предложения Gread и Sudhakar. То, что я пытаюсь сделать, - открыть Internet Explorer в качестве другого пользователя, чтобы я мог запускать некоторый CodedUI для утверждения рабочего процесса. – Nicola1234

1

Чтобы запустить процесс, рабочий процесс должен иметь высокие привилегии, и это не идеальный случай в любом веб-приложении. Если ваша цель - использовать IE для модульного тестирования, я бы подумал использовать что-то вроде WaitIN. Если ваша цель состоит в том, чтобы логика приложения получала доступ к URL-адресу и что-то делала, подумайте об использовании HttpWebRequest. Если вам все еще нужен процесс, который нужно запустить, создайте службу Windows, а затем выпустите веб-вызов, чтобы в Share Point вы могли просто позвонить, а ваша служба Windows может работать в локальной учетной записи или в другой учетной записи с высокими привилегиями.

Надеюсь, что это поможет и, пожалуйста, укажите сценарий, почему вы хотите запустить IE, и это может дать вам лучший ответ на форуме.

+0

Вы делаете очень хорошие моменты! – GreatAndPowerfulOz

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