Ошибка автоматизации ввода данных сайта, так как сайт все еще загружается

Ниже приведен пример ES6 того, как вы можете получить доступ к свойству объекта, используя имя свойства, которое было динамически сгенерировано путем объединения двух строк.

var suffix = " name";

var person = {
    ["first" + suffix]: "Nicholas",
    ["last" + suffix]: "Zakas"
};

console.log(person["first name"]);      // "Nicholas"
console.log(person["last name"]);       // "Zakas"

Это называется именами вычисленных свойств

1
задан QHarr 25 March 2019 в 08:56
поделиться

3 ответа

исправлено в 2019-03-25

Я думаю, что ошибка возникает из-за изменения 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)

может быть полезно.

0
ответ дан PaichengWu 25 March 2019 в 08:56
поделиться

Я удалил ниже цикла ожидания после строки 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)
0
ответ дан Prateek Vishwas 25 March 2019 в 08:56
поделиться

Используйте правильные ожидания загрузки страницы после каждых .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
0
ответ дан QHarr 25 March 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: