【问题标题】:Robot Framework Selenium retrieve iframes src attribute and place it in a variableRobot Framework Selenium 检索 iframes src 属性并将其放在变量中
【发布时间】:2015-12-18 00:48:38
【问题描述】:

我在网页中有一个 iframe 元素,这个 iframe 代表一个 html 文档,它代表我生成的表单。我想编写一个自动化的 Selenium 脚本来验证这个文档的某些值。我设法通过手动复制 iframe“src”属性中的 URL,然后在这个新 URL 上运行 Selenium 关键字“Go To”来做到这一点。然后,我可以从此页面正常浏览 html 文档 DOM(当 iframe 是上一页的一部分时,我无法在 iframe 中浏览)。

我现在想让它稍微优雅一些​​,所以脚本会抓取这个“src”属性,然后将它放在一个变量中。通过这种方式,我将能够编写一个自动脚本来导航到任何 URL 的报告,而不必像在这种情况下那样手动复制 URL。

因此,在我的 Robot/Selenium 脚本中,我想创建一个从 iframe 标记中检索此 src 属性的变量。假设在一个简单的例子中,我的 iframe 的 id 是“my_frame”,我们用来抓取它,src 是“www.google.com”。

我可以使用 Selenium/robot 函数从提供的元素中检索特定属性,并将其作为变量返回吗?

例如

${URL} = Set Variable  <Insert code here!>

【问题讨论】:

  • 为什么需要去iframe,而不是仅仅使用页面上已经存在的iframe?您知道select frame 关键字吗?
  • 我不知道这一点。所以我可以将 iframe xpath 传递给 Select Frame,然后我可以从框架内访问元素 xpath?
  • 是的,没错。
  • 好的,谢谢。尽管如此,我的 Selenium 仍然无法找到 iframe。如果没有我发布代码(不确定公司的政策...),您能想到 Selenium 无法读取 html 文档中的 iframe 的任何原因吗?
  • 好吧,我搞定了,只要在 Sleep for 3 seconds 行,然后一切似乎都可以工作

标签: html selenium xpath robotframework


【解决方案1】:

您可以使用Get element attribute 关键字,它可以让您获得src 属性。

例如:

| | ${src}= | get element attribute | frame1@src

但是,如果您只需要访问 iframe 中的元素,您可以使用 Select Frame 切换到该框架,然后直接在页面上使用 selenium 关键字,而不是打开新页面:

还有一些其他与框架相关的关键字,例如frame should containCurrent frame contains,以及其他一些。

【讨论】:

  • 我在发布问题后不久就发现了这一点,真不敢相信我错过了它,哈哈。一个问题是 Selenium 似乎无法找到 iframe 来获取 src,即使使用正确的 ID/xpath
  • 我现在用 Select Frame 让它工作了,只需要让它休眠几秒钟!谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 2017-10-26
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2021-11-11
相关资源
最近更新 更多