2015-06-09 2 views
0

Я пытаюсь использовать VBA Excel для автоматизации поиска и нажатия определенной ссылки. Проблема в том, что эта ссылка меняется каждый день (или с каждым человеком). Дело в том, что начало атрибута HREF всегда одно и то же, и это единственная ссылка на этой странице, которая имеет такой тип HREF.Поиск ссылок HREF - это отведение неверных ссылок

Я стараюсь не делать это слишком сложным, но я хочу объяснить это, чтобы вы поняли мой код и почему я сделал то, что я сделал: эта ссылка открывает новую страницу, но, поскольку сложно управлять несколькими экземпляры браузера с VBA я решил, что было бы лучше просто поместить код, который будет перемещаться по ссылке в том же браузере, а затем использовать objIE.back для цикла, если потребуется.

Я искал один раз, и связь была 59-й ссылки в документе, поэтому я попытался код, как:

If link59 <> "*ao/party/popuppartyinfo?party*" Then 
hrefvalue = line59 
'Gets rid of the JavascriptPopup unnecessary text 
trimedhrefvalue = Right(link59, 49) 
hrefurlvalue = "https://myjobswebsitehere.com" & trimedhrefvalue 
objIE.navigate hrefurlvalue 

сам код работал, но, видимо, эта связь не всегда 59-й ссылки на странице в зависимости на счете.

Так что теперь у меня есть следующие:

Application.StatusBar = "Trying to find link..." 
Application.Wait (Now() + TimeValue("00:00:05")) 
'objIE.document.parentWindow.execScript "execute('RefreshList');" 
Set ieLinks = objIE.document.getElementsByTagName("a") 
Do Until Progress = True 
For Each Links In ieLinks 
If Links.innerText = "/ao/party/popuppartyinfo?partyId" Then 
'Links.Click 
Application.StatusBar = "Found link! Please wait" 
Links.Value = hrefvalue 
trimedhrefvalue = Right(Links, 49) 
hrefurlvalue = "https://myjobswebsitehere.com" & trimedhrefvalue 
Progress = True 
Exit For 
End If 
Next Links 
Loop 

При выполнении этого кода, он всегда открывает страницу, которая не имеет ничего общего с тем, что я искал. На самом деле ни одно из слов в «/ ao/party/popuppartyinfo? PartyId» даже не отображается в ссылке, которую он открывает неправильно.

HTML-кода я пытаюсь получить следующим образом:

<a href="javascript:fnOpenWindow('/ao/party/popuppartyinfo?partyId=11111&nav=off')"> 

Весь HREF остается неизменным для каждого отдельного клиента для части «partyID», которая изменяется, за исключением.

Мой вопрос в том, что я делаю неправильно здесь, что приводит к тому, что этот поиск возвращает результаты, которые не имеют никакого отношения к внутреннему тесту, который я указал?

+0

Если это вообще возможно, опубликовать фактический адрес, а не 'myjobswebsitehere.com'. Это облегчит кому-то сканирование страницы и поможет вам ответить. – FreeMan

+0

@FreeMan К сожалению, веб-сайт, с которым я манипулирую, защищен не только именем пользователя и паролем, но и частной VPN, поэтому нет возможности, чтобы другие могли смотреть на сайт, если они не сидели на моем компьютере. Я могу опубликовать любой соответствующий HTML-код здесь, хотя, если потребуется, я изменю конфиденциальную информацию о клиенте. Что-нибудь, видимо, не так с моим кодом, чтобы найти конкретный HREF? – JGoldz75

+0

К сожалению, я не эксперт, вам нужно посмотреть на этот кусочек кода, я просто разместил комментарий в надежде, что вы получите ответ раньше. – FreeMan

ответ

1

Вычислено: Внутренний текст ссылки был чем-то, что меняет каждую страницу, поэтому по любой причине, которая помещала в мой код странную «открытую неправильную ссылку». Вот рабочий код:

Application.StatusBar = "Trying to find link..." 
Application.Wait (Now() + TimeValue("00:00:05")) 
'objIE.document.parentWindow.execScript "execute('RefreshList');" 
Set ieLinks = objIE.document.getElementsByTagName("a") 
Do Until Progress = True 
For Each Links In ieLinks 
If Links.outerHTML Like "<A href=""javascript:fnOpenWindow('/ao/party/popuppartyinfo?partyId=*" Then 
'Links.Click 
Application.StatusBar = "Found link! Please wait" 
Links.Value = hrefvalue 
trimedhrefvalue = Right(Links, 49) 
hrefurlvalue = "https://myjobswebsitehere.com" & trimedhrefvalue 
objIE.navigate hrefurlvalue 
Progress = True 
Exit For 
End If 
Next Links 
Смежные вопросы