Решение, которое вы ищете, немного сложно найти. Есть несколько хитростей, чтобы выбрать NATIONALITY
из выпадающего списка. Я использовал .querySelector()
в скрипте, чтобы сделать его кратким. Тем не менее, он должен служить вашей цели независимо от того, какую страну вы хотите выбрать из выпадающего списка. Дайте ему шанс:
Sub GetInfo()
Dim IE As New InternetExplorer, HTML As HTMLDocument, post As Object, URL$
URL = "https://eservices.mol.gov.ae/SmartTasheel/Complain/IndexLogin?lang=en-gb"
With IE
.Visible = True
.navigate URL
While .Busy = True Or .readyState < 4: DoEvents: Wend
Set HTML = .document
HTML.getElementById("TransactionInfo_WorkPermitNumber").innerText = "2659558"
HTML.querySelector("button[ng-click='showEmployeeSearch()']").Click
Application.Wait Now + TimeValue("00:00:03") ''If for some reason the script fails, make sure to increase the delay
HTML.getElementById("txtPassportNumber").Value = "J2659558"
HTML.getElementById("Nationality").Focus
For Each post In HTML.getElementsByClassName("ng-scope")
With post.getElementsByClassName("ng-binding")
For I = 0 To .Length - 1
If .item(I).innerText = "INDIA" Then ''you can change the country name here to select from dropdown
.item(I).Click
Exit For
End If
Next I
End With
Next post
HTML.getElementById("txtBirthDate").Value = "24/02/1990"
HTML.querySelector("button[onclick='SearchEmployee()']").Click
End With
End Sub
Ссылка для добавления в библиотеку:
Microsoft Internet Controls
Microsoft HTML Object library
Когда вы выполняете вышеуказанный скрипт, он должен дать вам желаемый результат.
Другой способ - использовать запрос xmlhttp
, который намного быстрее, чем IE. Вам необходимо передать аргументы query string parameter
в качестве словаря через запрос "POST". Если вы хотите изменить параметр, как в birth date
, passport
или nationality
, просто сделайте это в QueryString
. Кстати, параметр Nationality
должен быть заполнен value
вместо name
, как, 100
для INDIA.
Вот как должен выглядеть ваш скрипт:
Sub Get_Data()
Dim res As Variant, QueryString$, ID$, Name$
QueryString = "{""PersonPassportNumber"":""J2659558"",""PersonNationality"":""100"",""PersonBirthDate"":""24/02/1990""}"
With New XMLHTTP
.Open "POST", "https://eservices.mol.gov.ae/SmartTasheel/Dashboard/GetEmployees", False
.setRequestHeader "User-Agent", "Mozilla/5.0"
.setRequestHeader "Content-Type", "application/json"
.send QueryString
res = .responseText
End With
ID = Split(Split(Split(res, "Employees"":")(1), "ID"":""")(1), """,")(0)
Name = Split(Split(Split(res, "Employees"":")(1), "OtherData2"":""")(1), """}")(0)
[A1] = ID: [B1] = Name
End Sub
Ссылка для добавления в библиотеку:
Microsoft XML, V6.0
Запустив вышеуказанный скрипт, вы должны получить NAME
и ID
требуемого поиска.