VBA基于class的Selenium Edge打开网站
VBA Selenium Edge open website based on class
我正在尝试根据可以找到的 class 名称导航到网站。根据给定的 ID,它会打开第一个网站并搜索 3 个不同 class 名称中的一个。根据 class 名称匹配我想打开一个特定的网站。第一个网站总是有 3 个不同 class 名称中的一个。使用我当前的代码,当 VBA 找不到第一个 class 名称时,它会给我错误“找不到元素”并且不会继续到 ElseIf。如果找到第一个 class 名称,那么它工作正常并且没有错误。我如何才能让 VBA 忽略此错误或让它搜索所有 3 个 class 名称并根据找到的 class 名称决定要做什么?
代码:
Dim appME As New WebDriver
appME.Start "edge", ""
Dim id
id = 141765
appME.Get "website 1" & id
If (Not appME.FindElementByClass("Class1") Is Nothing) Then
appME.Get "website 2" & id
ElseIf (Not appME.FindElementByClass("Class2") Is Nothing) Then
appME.Get "website 3" & id
ElseIf (Not appME.FindElementByClass("Class3") Is Nothing) Then
appME.Get "website 4" & id
End If
我会在调用 FindElementByClass
之前添加 On Error Resume Next
,之后添加 On Error GoTo 0
。
为了确保 appME.Get
中的错误不会被掩盖,最好将其放入它自己的函数中:
Function MyFindElementByClass(appME as WebDriver, Byval classname as String) as WebElement
Set MyFindElementByClass=Nothing
On Error Resume Next
Set MyFindElementByClass=appME.FindElementByClass(classname)
On Error Goto 0
End Function
通过在类名后添加 Raise:=False 解决了问题。
Dim appME As New WebDriver
appME.Start "edge", ""
Dim id
id = 141765
appME.Get "website 1" & id
If (Not appME.FindElementByClass("Class1", Raise:=False) Is Nothing) Then
appME.Get "website 2" & id
ElseIf (Not appME.FindElementByClass("Class2", Raise:=False) Is Nothing) Then
appME.Get "website 3" & id
ElseIf (Not appME.FindElementByClass("Class3", Raise:=False) Is Nothing) Then
appME.Get "website 4" & id
End If
我正在尝试根据可以找到的 class 名称导航到网站。根据给定的 ID,它会打开第一个网站并搜索 3 个不同 class 名称中的一个。根据 class 名称匹配我想打开一个特定的网站。第一个网站总是有 3 个不同 class 名称中的一个。使用我当前的代码,当 VBA 找不到第一个 class 名称时,它会给我错误“找不到元素”并且不会继续到 ElseIf。如果找到第一个 class 名称,那么它工作正常并且没有错误。我如何才能让 VBA 忽略此错误或让它搜索所有 3 个 class 名称并根据找到的 class 名称决定要做什么?
代码:
Dim appME As New WebDriver
appME.Start "edge", ""
Dim id
id = 141765
appME.Get "website 1" & id
If (Not appME.FindElementByClass("Class1") Is Nothing) Then
appME.Get "website 2" & id
ElseIf (Not appME.FindElementByClass("Class2") Is Nothing) Then
appME.Get "website 3" & id
ElseIf (Not appME.FindElementByClass("Class3") Is Nothing) Then
appME.Get "website 4" & id
End If
我会在调用 FindElementByClass
之前添加 On Error Resume Next
,之后添加 On Error GoTo 0
。
为了确保 appME.Get
中的错误不会被掩盖,最好将其放入它自己的函数中:
Function MyFindElementByClass(appME as WebDriver, Byval classname as String) as WebElement
Set MyFindElementByClass=Nothing
On Error Resume Next
Set MyFindElementByClass=appME.FindElementByClass(classname)
On Error Goto 0
End Function
通过在类名后添加 Raise:=False 解决了问题。
Dim appME As New WebDriver
appME.Start "edge", ""
Dim id
id = 141765
appME.Get "website 1" & id
If (Not appME.FindElementByClass("Class1", Raise:=False) Is Nothing) Then
appME.Get "website 2" & id
ElseIf (Not appME.FindElementByClass("Class2", Raise:=False) Is Nothing) Then
appME.Get "website 3" & id
ElseIf (Not appME.FindElementByClass("Class3", Raise:=False) Is Nothing) Then
appME.Get "website 4" & id
End If