2014-11-23 1 views
1

Я пытаюсь автоматизировать задачу в IE с помощью VBS, и мне нужно нажать кнопку отправки. Есть две кнопки отправки, «Поиск» и «Фоетический поиск». Ни одна из этих кнопок не имеет значения или идентификатора, и оба они имеют один и тот же класс. HTML для кнопок:Нажатие кнопки в IE с VBS, когда кнопка не имеет идентификатора или имени и имеет тот же класс, что и другая кнопка

<td align="left"><button type="button" class="searchAdv" onclick="javascript:postAdvancedSearch()">Search</button><br></td> 
<td align="left"><button type="button" class="searchAdv" onclick="javascript:postAdvancedPhoneticSearch()">Phonetic Search</button></td> 

У меня есть этот код до сих пор:

Set IE = createobject("internetexplorer.application") 
strURL = "http://somewebsite.com" 
IE.navigate strURL 
IE.Visible = true 
Do While (IE.Busy Or IE.READYSTATE <> 4)  
    WScript.Sleep 100  
Loop  
Set searchButton = IE.Document.GetElementsByClassName("searchAdv") 

Это захватывает обе кнопки, так как они являются единственными на странице с этим классом, но теперь, как я заберу щелкните правой кнопкой мыши. searchButton(0 or 1).value пуст. Какой атрибут содержит метки «Поиск» и «Феникс-поиск» для кнопок? Я бы подумал, что что-то вроде searchButton(0).label или .text или что-то, но я не нашел, что работает. Как взять правую кнопку?

ответ

0

Выяснил это. Это был атрибут innerhtml.

for each button in searchButton 
    if instr(button.innerhtml,"Search") then 
     button.click 
     exit for 
    end if 
next 
+0

Это проверить матчи как «Поиск» * и * " Фонетический поиск ", потому что оба содержат строку (« Ввод »), поэтому кнопка с нажатием кнопки зависит от того, какой символ' .getElementsByClassName() 'возвращает первым. Лучше использовать свойство 'innerText' и сравнить полную строку:' Если LCase (Trim (button.innerText)) = "search" Then'. 'Trim()' удаляет ведущие и конечные пробелы из строки, а с помощью 'LCase()' вы эмулируете сравнение без учета регистра. –

0

Или пробегаем по всем ссылкам на странице:

Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = 1 
'IE.Visible = 0 
IE.navigate "http://<www.YourUrlToPage.net/..>" 
While IE.ReadyState < 4 Or IE.Busy : WScript.Sleep 100 : Wend 
'(ReadyState:4=Complete,3=Interactive,2=Loaded,1=Loading,0=Uninitialized) 

'WScript.Echo IE.Document.title 
For Each link in IE.Document.links 
    'a=MsgBox("link:" & vbCrLf & " " & link.href & vbCrLf &_ 
    '   "html:" & vbCrLf &_" " & link.innerhtml & vbCrLf &_ 
    '   "text:" & vbCrLf &_" " & link.innertext) 
    If instr(link.innerhtml,"<check text>") Then 
    link.Click 
    While IE.ReadyState < 4 Or IE.Busy : WScript.Sleep 100 : Wend 
    Exit For 
    End If 
Next 

(чтобы активировать MsgBox удалить относительно одинарные кавычки)

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