首页 > 解决方案 > Selenium VBA 服务员类错误 400 ArgumentError

问题描述

我试图通过使用服务员类来评估是否显示或启用了元素,从而使我的 selenium 代码更高效。不幸的是,我的第一次尝试使用元素 IsDisplayed 属性没有成功。

objDriver 和 objWait 设置在全局级别。我正在使用 Office 2016 VBA,x64

Public Function ElementIsVisible(ByVal strXpath As String) As Boolean
    Set objWait = New Selenium.Waiter
    ElementIsVisible = False
    If objWait.Until(Function:=AddressOf CkElementVisible, argument:=strXpath, timeout:=10000, timeoutMessage:="Element Not Visible") Then
        ElementIsVisible = True
    End If
    Set objWait = Nothing
End Function

Function CkElementVisible(ByVal strXpath As String) As Boolean
    CkElementVisible = False
    With objDriver
        If .FindElementByXPath(XPath:=strXpath, timeout:=10000).IsDisplayed Then
            CkElementVisible = True
        End If
    End With
End Function

如果使用(例如)调用此函数

strXP = "//input[contains(@data-id,'emailInput')]"
If ElementIsVisible(strXP) Then
   'Do stuff
End if

它显示错误 400 ArgumentError,位置 0 处的参数无效。需要一个函数。

发生这种情况的代码

If objWait.Until(Function:=AddressOf CkElementVisible, argument:=strXpath, timeout:=10000, timeoutMessage:="Element Not Visible") Then

根据文档,这应该是使用 Waiter 类的正确语法。有谁知道如何让这个功能工作?

艺术。

标签: excelvbaseleniumms-accessselenium-webdriver

解决方案


我假设您正在寻找的任何 HTML 标记都具有属性 @Style 可见性是“隐藏的”。请检查下面提到的标签

("#myid").attr("style", "visibility: hidden")

如果是,那么您需要包含一些操作以使其可见。


推荐阅读