之前有需求需要操作Chrome中的dom元素,沒做過這個,但是網上關於這個方面的資料比較少,所以自己搗騰了幾天,在知道.net中有這個玩意。
但是一百度,全是關於java,python的而c#的那是一個少。當然對其中的操作我還有很多不了解,這里我只是提出來c#是可以操作非IE的瀏覽器的。
public override void LoadApplication() { #region MyRegion Process[] processes = Process.GetProcessesByName("chromedriver"); for (int i = 0; i < processes.Length; i++) { processes[i].Kill(); } //獲取所有類為Chrome_WidgetWin_1的信息,如果打開了特定(單)病種質量監測系統,就直接返回 List<WindowInfo> listInfo= WindowOperate.GetAllDesktopWindows("Chrome_WidgetWin_1"); for (int i = 0; i < listInfo.Count; i++) { if (listInfo[i].szWindowName != null) { IntPtr ptr = listInfo[i].hWnd; if (listInfo[i].szWindowName.Contains("特定(單)病種質量監測系統")) { WindowOperate.ShowWindow(ptr, (int)WindowShowStatus.SW_RESTORE); WindowOperate.SetForegroundWindow(ptr); WindowOperate.ShowWindow(ptr, (int)WindowShowStatus.SW_SHOWNORMAL); return; } } } string currtentPath = Application.StartupPath + "\\" + "chromedriver.exe"; IWebDriver web = new ChromeDriver(); hideConsole(currtentPath); web.Navigate().GoToUrl(str_LoginUrl); var username = web.FindElement(By.Id("UserName")); var password = web.FindElement(By.Id("Password")); username.SendKeys(this._loginName); password.SendKeys(this._password); var buttonLogin = web.FindElement(By.ClassName("btn")); buttonLogin.Click(); //測試 if (web.Url == "http://192.168.100.143/Account/Login") { var msg = web.FindElement(By.ClassName("vali-summary-phd")); string strmsg = msg.Text; if (strmsg == "提供的用戶名或密碼不正確。") { //如果密碼錯誤,重新修改配置密碼 frmChangeExternalAppUser frmChangeExternalAppUser = new frmChangeExternalAppUser(this._appId, this._loginName, "單病種系統"); frmChangeExternalAppUser.ShowDialog(); if (frmChangeExternalAppUser.IsChanged) { this._loginName = frmChangeExternalAppUser.LoginName; this._password = frmChangeExternalAppUser.Password; this.LoadApplication(); } } } #endregion }