3

我是 selenium 的新手,想了解如何识别 iframe 或弹出窗口中的元素。在我们的应用程序中,当我们单击按钮时,会在同一页面上加载弹出窗口或 iframe。在该页面上,我需要单击一个按钮,然后继续我的其他操作。录制时,selenium 不会等待弹出窗口或 iframe 加载。由于 iframe/popup 仍在加载,它会转到下一个命令并失败,因为尚未找到该对象。

应该是使用等待命令来等待它加载或使用一些选择命令。

我很困惑。我尝试了几个命令,例如 waitforpopup、selectframe、waitforframetoload,但无法弄清楚。

对此的任何帮助都会很棒!

提前致谢

4

3 回答 3

4

这是一个对我有用的解决方案:

场景

  1. 使用向 DOM 添加 iframe 的 JavaScript 加载页面<iframe id="iframeId" />
  2. iframe 加载
  3. 现在我想检查 iframe 中的元素<div id="divElement"></div>

解决方案

(Command > C,Target > T,Value > V)如果我没有包括,这意味着留空

  • C :打开   |   电话/
  • CwaitForElementPresent   |   T : iframeId   |   3000
  • C :等待帧加载   |   T : iframeId   |   5000
  • C选择框架   |   T : iframeId
  • C :断言元素存在   |   T : css=div#divElement
  • C :验证元素存在   |   T : css=div#divElement
于 2012-12-06T08:56:55.510 回答
0

需要输入手动 IDE 命令来完成您的脚本。

要识别弹出窗口中的元素,您需要使用“selectPopup”命令将焦点放在弹出窗口中。

要识别 iframe 中的元素,请使用“selectFrame”命令并将 iframe id 输入到 Target 参数中。根据页面结构(可能有多个 iframe 等),使用没有目标 ID 的“selectFrame”命令可能会静默失败。

希望这些信息有所帮助。

于 2012-10-17T23:24:23.183 回答
0

这里有几个答案,任何人都可以从中受益,但有时 iframe id 可能是动态的,因为来自特定链接的不同内容(例如不同的付费订阅或试用等),并且为目标提供静态 id 会使您的测试失败。最好的情况是采用 iframe 标签的静态属性,例如类属性,这样您就可以每次都运行脚本。

于 2015-07-31T11:14:36.267 回答