Selenium切换到iframe在ruby中不工作

Selenium切换到iframe在ruby中不工作,ruby,iframe,selenium,selenium-webdriver,Ruby,Iframe,Selenium,Selenium Webdriver,切换到iframe后,我找不到元素。我相信driver.switch\u到.frame(“homeFrame”)失败了。我可以找到页面上不在iframe中的其他元素,但我无法在iframe中获得任何内容 这是我的模拟红宝石: require 'selenium-webdriver' begin driver = Selenium::WebDriver.for :firefox driver.manage.timeouts.implicit_wait = 10 drive

切换到iframe后,我找不到元素。我相信
driver.switch\u到.frame(“homeFrame”)
失败了。我可以找到页面上不在iframe中的其他元素,但我无法在iframe中获得任何内容

这是我的模拟红宝石:

require 'selenium-webdriver'

begin
    driver = Selenium::WebDriver.for :firefox
    driver.manage.timeouts.implicit_wait = 10
    driver.navigate.to "file:///Users/$USER_NAME/Desktop/iframe/index.html"
    driver.switch_to.frame("homeFrame")
    link = driver.find_elements(:xpath, "/html/body/div[2]/div[3]/div/div/ul/li[5]/a")
    link.click
end
我用所有示例代码和我正在使用的HTML创建了一个

  • a-main.rb-模拟示例ruby脚本
  • b-index.html-包含iframe元素的html
  • c-homeFrame-iframe.html-iframe中的html

  • 这里是要点的链接

    只是一个快速观察,您可能需要先找到这个iframe元素,然后再切换到它。例如:iframeLocation=driver.find_element_by_xpath(“//iframe[@********]”),然后driver.switch_到_frame(iframeLocation)。希望这有帮助。很抱歉我在我的示例中使用python。@YuZhang感谢您的帮助,但是ruby
    Selenium::WebDriver::Driver#switch#u to
    不支持接受
    Selenium::WebDriver::Element
    作为参数,也不支持传入
    Selenium::WebDriver::Element#FINDERS
    键值对(:id“homeFrame”)它只接受iframe元素的id属性。我一直在文档中搜索其他选项。下面是iframe的src属性似乎是由javascript设置的,我需要单击页面上的某个地方来触发js。我现在可以通过id定位iframe中的元素,但是xpath不起作用。在这种情况下,我需要使用xpath,因为我需要的元素没有id属性我不知道为什么,但是使用
    link=driver.find_元素(:css,“#app dashbrd page>div>ul>li:nth child(5)>a”)
    而不是
    :xpath
    有效。我尝试使用两个简单的html文件重新创建该问题,但xpath运行良好。我认为这个问题是我工作的网站特有的