我正在尝试使用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>
答案 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#代码。