2016-11-28 99 views
0

我正在使用shell.application的組合來查找我的相關Internet Explorer,然後使用UIAutomation來處理彈出窗口,該窗口用於在給定頁面上給出的文件下載。這工作很好,直到我有一個單一的Internet Explorer。現在我必須從Internet Explorer的四個不同選項卡執行相同操作。選擇Internet Explorer中的選項卡

該程序的Shell.application部分工作很好。但是爲了使UIAutomation工作,給定的網頁需要位於屏幕的前方。我想看看是否可以使用shell.application來實現,或者我願意提供建議。

注意我做了很多搜索,但無法找到正確的內容。我粘貼了這兩個代碼。

'Connect with ApplicationName 
Set objShell = CreateObject("Shell.Application") 
IE_count = objShell.Windows.Count 
For x = 0 To (IE_count - 1) 
    On Error Resume Next ' sometimes more web pages are counted than are open 
    my_url = objShell.Windows(x).document.Location 
    my_title = objShell.Windows(x).document.Title 

    If my_title Like "ApplicationName" & "*" Then 
     Set ie = objShell.Windows(x) 
     'ie.<<want some kind of select option >> 
     Exit For 
    Else 
    End If 
Next 


'Save download - this code does not work unless the Internet explorer is in the front 
Application.Wait Now() + TimeSerial(0, 0, 5) 
Dim o As IUIAutomation 
Dim e As IUIAutomationElement 
Set o = New CUIAutomation 
Dim h As Long 
h = ie.Hwnd 
h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString) 
If h = 0 Then Exit Sub 

Set e = o.ElementFromHandle(ByVal h) 
Dim iCnd As IUIAutomationCondition 
Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "Save") 

Dim Button As IUIAutomationElement 
Set Button = e.FindFirst(TreeScope_Subtree, iCnd) 
Dim InvokePattern As IUIAutomationInvokePattern 
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId) 
InvokePattern.Invoke 

回答

0

本身並不是一個答案,只是比評論更好的格式。我用下面的提取標籤即時通訊使用SO。

Sub IEs() 

Dim x As ShellWindows 
Dim i As Integer 
Dim w As WebBrowser 

Set x = New ShellWindows 

For Each w In x 
    If w.LocationURL = "http://stackoverflow.com/questions/40846141/select-a-tab-in-internet-explorer" Then Exit For 
Next w 

End Sub 
+0

謝謝,但我想我可能找到了解決方案。打開IE的單獨實例中的所有選項卡,然後使用ie.visible = false並再次使用ie.visible = true。必須對其進行測試。 –

+0

這樣,我想在前面的IE瀏覽器出現...必須嘗試,看看這個工程 –

0

我繼續做我的研究,並在這裏發帖的解決方案,我發現一個簡單的解決方案。

我們所要做的只是在IE的同一實例中打開不同的網頁作爲選項卡,我們打開單獨的IE實例,然後在使用shell找到它之後將相關的網頁放到最前面。應用程序是以下兩行。

ie.Visible = False 
ie.Visible = True 
相關問題