【问题标题】:watir/ruby waiting for iframe to existwatir/ruby 等待 iframe 存在
【发布时间】:2020-11-10 16:40:54
【问题描述】:

我在输入日期范围后等待页面上存在 iframe 时遇到问题,我不想使用睡眠。我正在使用 ruby​​/watir

我已经尝试过这样的解决方案 -

wait_until(10, "iFrame has not loaded") do
  @browser.iframe(id: "dtl00_DP1_content").exists?
end

但这只是返回这个错误 - Selenium::WebDriver::Error::NoSuchWindowError: no such window

那么我该如何等待一个还不存在的 iframe?

【问题讨论】:

  • 您只想查看iframe是否出现?或者你打算在 iframe 中执行一些操作?如果您要在 iframe 中执行一些操作,例如 @browser.iframe(name: "something").text_field(name: "username").set 'raja',那么 watir 会自动先等待 iframe,如果没有出现,则会抛出以下错误 timed out after 30 seconds, waiting for #<Watir::IFrame: located: false; {:id=>"something", :tag_name=>"iframe"}
  • 如果您切换到另一个已关闭的窗口,您只会收到 NoSuchWindowError。您需要先切换回活动窗口。

标签: ruby selenium iframe watir


【解决方案1】:

我不确定你是否只想等待 iframe,如果你想对 iframe 中存在的元素执行任何操作,那么你可以按照我在评论中提到的那样做。

@browser.iframe(name: "something").text_field(name: "username").set 'raja'

或者如果你还在等待iframe出现,那么写下面的代码

@browser.wait_until { @browser.iframe(id: "dtl00_DP1_content").exists? }

上面的代码等待30秒,但是如果你想增加等待时间,那么写下面的代码,下面的代码会等待50秒。

@browser.wait_until(timeout: 50) { @browser.iframe(id: "dtl00_DP1_content").exists? }

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    相关资源
    最近更新 更多