internet explorer
otomatiği WCF web services
oluşturuyorum. Aynı örnekte Internet Explorer
'a erişmesi gereken birden çok web hizmeti çağrısı vardır. Ancak, WCF
hizmetleri IIS
üzerinde barındırıldığı için web hizmetine yapılan tüm çağrılar oturum 0'da yürütülür. Artık aynı örnek Internet Explorer
'a erişmek için Internet Explorer
örneğinin pencere tanıtıcısını döndüren SHDocVw.InternetExplorer.HWND
özelliğini kullanıyorum. Aşağıdaki kod WCF
hizmeti olarak IIS 7
üzerinde yürütüldüğünde, pencere tanıtıcıları her zaman oturum 0 yalıtımı nedeniyle 0 değerini döndürür. Ayrıca, aynı IE
örneğine tekrar bağlanamaz veya tüm açık IE
pencereleri arasında döngü yapamıyorum. İşlem listesini numaralandırabilir ve her IE
penceresi için oturum kimliklerini oturumda açabilirim, ancak System.Diagnostics.Process
- SHDocVw.InternetExplorer
nesnesine atayamıyorum. Herhangi bir yardım çok takdir edilecektirOturum 0'da çalışan bir internet explorer penceresi nasıl benzersiz bir şekilde tanımlanır?
public int GetWhd()
{
InternetExplorer ie = new InternetExplorer();
ie.Visible = true;
return ie.HWND;
}
public int SetWhd(string whd)
{
int wh = Int32.Parse(whd);
InternetExplorer ie = null;
ShellWindows s = new ShellWindows();
foreach (SHDocVw.InternetExplorer ie1 in s)
{
try
{
if (ie1.HWND == wh)
{
ie = ie1;
break;
}
}
catch { return 2; }
}
if (ie != null) { ie.Navigate("www.google.com"); return 1; }
return 0;
}
:
Aşağıda benim kodudur.
bakabilirsiniz. Daha sonra internet explorer'ı doğrudan web servisinizden kontrol etmeye çalışmak yerine, uydu işleminize kontrol komutları göndermek için bazı süreçler arası iletişim mekanizmasını (adlandırılmış borular, WCF veya .Net Remoting) kullanın; . Ayrıca, web hizmetiniz ile uydu işleminiz arasındaki iletişimi, özellikle uydu işleminiz, oturum açmış olan kullanıcıdan daha yüksek ayrıcalıklarla çalışıyorsa, sağlamalısınız. – Hans
Bunun yerine [WebDriver] (https://code.google.com/p/selenium/wiki/InternetExplorerDriver) kullanmayı düşünün. – Aron
Teşekkürler @Hans .. Yaklaşımınıza dayanarak bazı testler yaptım (adlandırılmış borular kullanarak) ve çok iyi çalışıyor. Yardım ettiğin için teşekkür ederim! – Neville