2015-09-22 1 views
1

Я пытаюсь автоматически получить скриншот на веб-странице с помощью VBScript. Я застрял в точке, где VBScript не может идентифицировать элемент, который мне нужно щелкнуть.Автоматизация веб-страницы

Есть ли способ идентифицировать элемент other elementId как xpath/title/value/name, которые гораздо легче идентифицируются в автоматизации веб-страниц Selenium. Вот мой сценарий:

Dim IE 
Dim Helem 
Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = 1 
IE.navigate "https://mylink/logon.jsp" 

Do While (IE.Busy) 
    WScript.Sleep 3 
Loop 

Set Helem = IE.document.getElementByID("overridelink") 
Helem.Click 

Do While (IE.Busy) 
    WScript.Sleep 3 
Loop 

Set Helem = IE.document.getElementById("j_username") 
Helem.Value = "user123" 
Set Helem = IE.document.getElementById("j_password") 
Helem.Value = "pass123" 
IE.document.getElementById("other").Click 

Do While (IE.Busy) 
    WScript.Sleep 10 
Loop 

IE.document.getElementById("elementId").Click 

Проблема возникает, когда последний элемент не идентифицируется с использованием Id. Я получаю следующую ошибку:

Error : Object required :'document.getElementById(...)'
Code : 800A01A8

Это демо, которое я использовал здесь. Кодирование кадра на странице:

<frameset id="Cmain" ////<br/> 
    <FRAME id="Banner" //<br/> 
    <frameset id="content" //<br/> 
     <FRAME id="Navigation" //<br/> 
     <frameset rows=//<br/> 
      <FRAME id="Taskbar" //<br/> 
      <FRAME id="Work"  //<br/> 
      <FRAME id="Work_NonSM" //<br/> 
     </frameset><br/> 
    </frameset> 
</frameset> 

Идентификатор, который я использовал, является «Навигация».

IE.document.parentWindow.window.frames(0).document.getElementById("element id") 
+0

ли элемент на самом деле есть идентификатор? На самом деле мы не можем сказать вам, не видя источника страницы или сообщения об ошибке. –

+0

На самом деле есть идентификатор, но его не идентифицируют. Сообщение об ошибке приходит в приглашение после выполнения vbscript. Ошибка: - Требуется объект: document.getElementById (...) 'Код: 800A01A8 – rahnik67

ответ

0

Похоже, ваш IE ручка отсоединился от фактического экземпляра IE. Попробуйте повторно прикрепив ее:

... 

Set app = CreateObject("Shell.Application") 
For Each wnd In app.Windows 
    If InStr(1, wnd.FullName, "iexplore.exe", vbTextCompare) > 0 Then 
    Set IE = wnd 
    Exit For 
    End If 
Next 

IE.document.getElementById("elementId").Click 

Если у вас есть более одного окна Internet Explorer можно использовать заголовок окна вместо имени исполняемого файла, чтобы выбрать правильный один:

For Each wnd In app.Windows 
    If InStr(1, wnd.LocationName, "page title", vbTextCompare) > 0 Then 
    Set IE = wnd 
    Exit For 
    End If 
Next 
+0

Мне нужно добавить это после кода, где я получаю сообщение об ошибке после того, как мне нужно щелкнуть? – rahnik67

+0

@ rahnik67 Нет, до этого. См. Обновленный ответ. –

+0

все еще я получаю ту же ошибку. Я думаю, что проблема вызвана не идентифицированным элементом. Есть ли другие способы идентификации элемента, отличного от getElementById, такого как xpath – rahnik67

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