【问题标题】:VBA Selenium - Wait for Iframe to loadVBA Selenium - 等待 iframe 加载
【发布时间】:2020-03-07 05:43:40
【问题描述】:

我正在尝试登录 chrome 上的网页并等待特定 iframe 加载,谁能帮助我使用 vba selenium 编写代码?

bot.Start "chrome", ""
bot.Get "weburl"
On Error GoTo a
bot.Wait "2000"
bot.FindElementById("loginUserName").SendKeys Sheets("SUMMARIZE CLP").[b1]
bot.FindElementById("loginPassword").SendKeys Sheets("SUMMARIZE CLP").[b2]
bot.Wait "2000"
bot.FindElementById("loginButton").Click
a:
bot.SwitchToFrame (0)
bot.FindElementById("rpFilterComboBox-1039-inputEl").SendKeys Sheets("CLP FROM OFFICE").[bd1] ' this is where i got error

【问题讨论】:

    标签: vba selenium iframe


    【解决方案1】:

    我刚刚找到了答案:

    看起来我只是等到该 iframe 中的元素存在:

    bot.SwitchToFrame (0)
    On Error Resume Next
    Do While IsError(bot.FindElementById("rpFilterComboBox-1039-inputEl")) = True
    Loop
    bot.FindElementById("rpFilterComboBox-1039-inputEl").SendKeys Sheets("CLP FROM OFFICE").[bd1]
    bot.FindElementByXPath(".//*[text()=' in Wave'] ").Click
    

    【讨论】:

      【解决方案2】:

      想象一下您的 Selenium 驱动程序是 Internet Explorer 的副本。然后执行此操作。

      Do While bot.FindElementById("rpFilterComboBox-1039-inputEl").IsDisplayed = False
          DoEvents
      Loop
      

      当您等待元素出现时,您的 VBA 主机将拥有控制权。我更喜欢这个解决方案,因为它不会在您需要时中断错误处理。

      【讨论】:

        【解决方案3】:

        设置和隐式等待

        Bot.timeouts.implicitwait = 20000

        时间以毫秒为单位,然后它将等待该时间量,如果代码因为找到它而跳过元素并且它的值是空的,则可以使用 if 语句

        再次检查: 机器人等待 1000 如果 bot.findelementbywhatever("your element").text = "" 那么 再次检查 别的 结束如果

        【讨论】:

          猜你喜欢
          • 2013-08-31
          • 2010-12-28
          • 1970-01-01
          • 2017-07-05
          • 2010-11-30
          • 1970-01-01
          • 2019-05-31
          • 2018-03-20
          • 2017-03-27
          相关资源
          最近更新 更多