【问题标题】:Selenium Ruby - Switch frame by class attributeSelenium Ruby - 按类属性切换帧
【发布时间】:2016-09-29 03:58:24
【问题描述】:

我正在使用 Selenium 的 Ruby 绑定,并且正在尝试将 WebDriver 切换到只能通过 类属性 识别的 iFrame。

本质上,我正在尝试实现与此 Java 代码等效的代码:
driver.switchTo().frame(driver.findElement(By.className("my-iframe-class")));
但我没有这样做,因为 Ruby 包装器只接受 idname强>属性 driver.switch_to.frame('some-id-or-name')

关于如何在 Ruby 中按 class 切换帧有什么建议吗?

这是一个示例 HTML:

<html>
  <head></head>
  <body>
    <iframe class="my-iframe-class">
      <p>iframe body</p>
    </iframe>
  </body>
</html>

【问题讨论】:

  • 你解决了吗?

标签: ruby selenium selenium-webdriver browser-automation selenium-ruby


【解决方案1】:

ruby docs on github 说你可以做到:

driver.switch_to.frame driver.find_element(:class, 'some-frame') # frame element

请注意,我没有使用 ruby​​ 绑定,所以我无法告诉你这是否正确。

【讨论】:

  • 感谢您的回答,但遗憾的是这不起作用。可能是因为在我的情况下没有“id”属性。正如您在源代码中看到的,函数“frame”需要一个“id”github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/…(第 36-38 行)然后将其传递给 github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/…(第 205-207 行)
  • 我对 ruby​​ 了解不多,但我链接到的文档使您看起来可以使用 driver.find_element 将 webelement 传递给 switch_to.frame 函数。由于 driver.find_element is 能够采用类名或其他定位器,与 switch_to.frame 函数不同,我认为我的示例会起作用。请注意,我告诉 find_element 使用 :class,而不是 :id。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
相关资源
最近更新 更多