2

我是新手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 秒,并且在脚本失败之前看到链接跳过显示了几秒钟,所以我不认为这是一个问题。

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

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

4

1 回答 1

0

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

@driver.switch_to.frame(0) 

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

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

于 2012-12-12T19:58:21.230 回答