【问题标题】:Rails RSpec script fails to identify elements (update: because they are in iframe)Rails RSpec 脚本无法识别元素(更新:因为它们在 iframe 中)
【发布时间】:2012-12-05 19:41:59
【问题描述】:

我是RailsSelenium 的新手,但使用过其他自动化测试工具。

我将一个脚本从 Selenium 2 IDE 导出到 Rails/RSpec,并正在修改代码以使其运行。该脚本无法找到特定链接。

从工作 IDE 脚本导出的原始 Ruby 代码是:

@driver.find_element(:link, "skip").click

这失败了,所以我尝试使用 XPath 语句来识别元素。 (我使用 XPath修复了原始导出代码中的其他元素失败,这就是我使用此策略的原因。)

我尝试了不同的替代方法来识别 Ruby 代码中的链接,例如:

尝试 #1:@driver.find_element(:XPath, "//*[@class='skip-link']").click

尝试 #2:@driver.find_element(:XPath, "//*[@value='skip']").click

所有情况下的结果:Unable to locate element: {"method":"link text","selector":"skip"}

每个 Firebug 报告的 HTML:

<a style="float: right; margin-right: 10px; text-decoration: none;" href="/yourfuture" class="skip-link"> skip </a> 

每个 Firebug 报告的 XPath:

/html/body/div[2]/div[2]/div/div/div[3]/div[4]/a

我将超时设置为 60 秒,并且看到链接 skip 在脚本失败之前显示了几秒钟,所以我认为这不是问题。

一个可能相关的事实:当应用程序显示带有所有控件的窗口时,最初不会出现 skip。根据程序设计,应用程序会等待大约 5 秒。

我做错了什么?提前致谢。

【问题讨论】:

    标签: iframe selenium-webdriver rspec-rails automated-tests


    【解决方案1】:

    原来没有看到的链接在 iFrame 中。 iframe 的属性发生了变化,因此很难用静态属性来识别它,所以我只是在 Webdriver 无法“看到”的行之前插入了以下代码行:

    @driver.switch_to.frame(0) 
    

    如果有识别 iframe 的可靠方法,我也可以使用 @driver.switch_to.frame("iframe-identifier-per-swtich")

    是的,你可能知道这一点,但也许这会帮助另一个新手避免同样的问题。

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 2019-07-03
      • 2018-03-15
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多