Selenium IDE:altKeyDown()+“点击”而不是将目标另存为

时间:2013-02-08 16:18:47

标签: selenium selenium-ide

我正在尝试使用Alt + Click将Firefox“目标另存为”。当我自己这样做时,这适用于Firefox(我更新了Firefox设置以启用Alt +单击以保存目标)。当我在Selenium IDE中尝试它时,它不会在使用altKeyDown()在Click事件之前复制相同的功能。

<tr>
    <td>clickAndWait</td>
    <td>id=ctl00</td>
    <td></td>
</tr>
<tr>
    <td>altKeyDown</td>
    <td></td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>link=Document</td>
    <td></td>
</tr>

1 个答案:

答案 0 :(得分:3)

你不能。

Selenium IDE由JavaScript提供支持和支持。

因此,你在Selenium IDE中做的每一个动作(以及Selenium RC,这是旧的Selenium引擎,可以这么说)都是“只是”JavaScript并具有相同的能力。显然,你不能通过在页面上运行任何JS强制“目标另存为”,这可能是一个安全漏洞,因为互联网上的任何页面都可能强制你的浏览器下载任何文件。

此外,你无法真正模仿用JS按下按钮使其成为操作系统级事件,以使Firefox“听到”它。当由JS完成时,它“仅仅”是一个文档级事件,主要用于页面上的其他JS脚本以了解它。

此限制(以及其他许多限制因素)导致Selenium开发人员放弃Selenium RC,转而使用Selenium WebDriver(也称为Selenium 2),如果可以的话,它使用与浏览器的本机交互。 But even that can't yet download files以可靠的方式。

也就是说,由于高级用户交互API and will work on most browser and OS combinations out there(Java示例),按 Alt 键并单击WebDriver很简单:

new Actions(driver)
    .keyDown(Keys.ALT)
    .click(driver.findElement(By.id("ctl00")))
    .keyUp(Keys.ALT)
    .perform();

如果您的组合尚未支持,此操作只会发出模拟按键,这也是Firefox无法听到的。在这种情况下,您需要使用语言的工具来处理(例如,Java中的Robot类)。

此外,您可以轻松地将现有的测试脚本从IDE导出到类似WebDriver的Java或C#代码。