《SeleniumBasic 3.141.0.0 - 在VBA中操作浏览器》高级技术之四:SeleniumBasic的三种等待方式

我们在做WEB自动化时,一般要等待页面元素加载完成后,才能执行操作,否则会报找不到元素的错误,这样就要求我们在有些场景下加等待时间。

SeleniumBasic有三种等待方式:

  • 强制等待:与Selenium无关的一种堵塞线程的延时方法,固定毫秒数
  • 隐式等待:设置一个等待时间,如果在这个等待时间内,网页加载完成,则执行下一步;否则一直等待时间截止,然后再执行下一步。这样也就会有个弊端,程序会一直等待整个页面加载完成,直到超时,但有时候我需要的那个元素早就加载完成了,
  • 显式等待:程序每隔一定时间检查一次,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException

SeleniumBasic的Utility类提供了一个Sleep方法,用于实现强制等待。

    WD.New_ChromeDriver Service:=Service, Options:=Options
    WD.URL = "https://www.baidu.com"
    Dim form As SeleniumBasic.IWebElement
    Dim keyword As SeleniumBasic.IWebElement
    Dim button As SeleniumBasic.IWebElement
    Set form = WD.FindElementById("form")
    Set keyword = form.FindElementById("kw")
    Dim U As Utility
    Set U = New SeleniumBasic.Utility
    keyword.SendKeys "好看视频"
    U.Sleep 3000
    keyword.Clear

以上程序,在输入框中键入“好看视频”,过3秒后清空文本框内容。

SeleniumBasic有一个ITimeouts类,下面有3个成员,其中ImplicitWait就是隐式等待,这是一个可写属性。图中把隐式等待时间设置为5秒。

![]()

显式等待,在IWebDriver对象下面,有一个WebDriverWait_Timeout 属性,修改它即可设置显式等待时间。

WD.WebDriverWait_Timeout = 30

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。