Ниже приведен пример ES6 того, как вы можете получить доступ к свойству объекта, используя имя свойства, которое было динамически сгенерировано путем объединения двух строк.
var suffix = " name";
var person = {
["first" + suffix]: "Nicholas",
["last" + suffix]: "Zakas"
};
console.log(person["first name"]); // "Nicholas"
console.log(person["last name"]); // "Zakas"
Это называется именами вычисленных свойств
Я думаю, что ошибка возникает из-за изменения doc
.
Переписать
' This is the Line2
doc.getElementById("ContentPlaceHolder1_GridView1_chkboxSelectAll").Click
'Wait 3 seconds till it selects all the checkboxes
Application.Wait DateAdd("s", 3, Now)
как
' This is the Line2
application.wait Application.Wait DateAdd("s", 1, Now)
set doc = IE.document
doc.getElementById("ContentPlaceHolder1_GridView1_chkboxSelectAll").Click
'Wait 3 seconds till it selects all the checkboxes
Application.Wait DateAdd("s", 3, Now)
может быть полезно.
Я удалил ниже цикла ожидания после строки 1.
'Wait till it loads
Do While IE.Busy
Application.Wait DateAdd("s", 5, Now)
Loop
и добавлено исправление 10 секунд времени ожидания Application.Wait DateAdd("s", 10, Now)
непосредственно перед
doc.getElementById("ContentPlaceHolder1_GridView1_chkboxSelectAll").Click
'Wait 3 seconds till it selects all the checkboxes
Application.Wait DateAdd("s", 3, Now)
Итак, последний фрагмент кода, как показано ниже, и работает!
'This is the Line1
doc.getElementById("ContentPlaceHolder1_search").Click
'Checkbox select all
'This is the Line2
Application.Wait DateAdd("s", 10, Now)
doc.getElementById("ContentPlaceHolder1_GridView1_chkboxSelectAll").Click
'Wait 3 seconds till it selects all the checkboxes
Application.Wait DateAdd("s", 3, Now)
Используйте правильные ожидания загрузки страницы после каждых .Navigate
и .Click
.
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
Кроме того, вы можете обернуть элементы, которые выдают ошибки, связанные с таймингами, в синхронизированные циклы, которые пытаются установить ссылку на объект
Dim t As Date, ele As Object
Const MAX_WAIT_SEC As Long = 10
t = Timer
Do
On Error Resume Next
Set ele = doc.getElementById("ContentPlaceHolder1_GridView1_chkboxSelectAll")
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While ele Is Nothing
If Not ele Is Nothing Then
ele.Click
End If