2016-11-28 2 views
0

Я использую комбинацию shell.application для поиска моего соответствующего Internet Explorer и с помощью UIAutomation, чтобы затем работать над всплывающим окном, которое поставляется для загрузки файла, которое я даю на данной странице. Это отлично поработало до того времени, когда у меня был единственный интернет-исследователь. Теперь я должен сделать то же самое с четырех разных вкладок 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

Не сам по себе, просто лучше форматирование, чем комментарий. Я использовал ниже, чтобы извлечь вкладку im, использующую для 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, а затем приводим соответствующую веб-страницу на передний план после того, как нашли ее с помощью оболочки. приложение - это две строки ниже.

ie.Visible = False 
ie.Visible = True 
Смежные вопросы