Вам необходим временной цикл (или установить более длительное время ожидания - см. Внизу), чтобы дать время для появления элемента на странице.Я бы также использовал SendKeys для заполнения значений, и вы не можете связать .Value
, которое является свойством, вместе с .Click
, который является методом.
Selenium Basic имеет свой собственный синтаксис и неявный иявные условия ожидания.Вы пытались использовать синтаксис, используемый с автоматизацией Internet Explorer и обходом документов DOM через MSHTML.Это не сработает здесь.Правильный синтаксис показан ниже.
Option Explicit
Public Sub EnterInfo()
Dim d As WebDriver, t As Date, ele As Object
Const MAX_WAIT_SEC As Long = 10
Set d = New ChromeDriver
Const URL = "https://ss3.shipstation.com/"
With d
.Start "Chrome"
.get URL
t = Timer
Do
On Error Resume Next
Set ele = .FindElementById("username")
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While ele Is Nothing
If ele Is Nothing Then Exit Sub
ele.SendKeys "abc"
.FindElementById("password").SendKeys "xyz"
.FindElementById("btn-login").Click
Stop '<==delete me later
.Quit
End With
End Sub
Я бы посоветовал взглянуть на этот учебник и примеры здесь
Более длительное время ожидания:
Option Explicit
Public Sub EnterInfo()
Dim d As WebDriver, ele As Object
Set d = New ChromeDriver
Const URL = "https://ss3.shipstation.com/"
With d
.Start "Chrome"
.get URL
Set ele = .FindElementById("username", timeout:=5000)
If ele Is Nothing Then Exit Sub
ele.SendKeys "abc"
.FindElementById("password").SendKeys "xyz"
.FindElementById("btn-login").Click
Stop '<==delete me later
.Quit
End With
End Sub