2013-02-08 55 views
1

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

<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> 

回答

3

你不能。

Selenium IDE由JavaScript提供支持和限制。因此,您在Selenium IDE(以及Selenium RC是旧的Selenium引擎,可以这么说)中所做的每个动作都是“仅仅”JavaScript,并且具有相同的功能。很明显,你不能强制在页面上运行任何JS来实现“目标另存为”,这将是一个可能的安全漏洞,因为互联网上的任何页面都可以强制你的浏览器下载任何文件。

另外,你不能真正模仿用JS按下按钮,使它成为OS级别的事件,使Firefox“听到”它。当由JS完成时,它仅仅是一个文档级事件,主要是为了了解它的其他JS脚本。

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

这就是说,按下的webdriver的Alt键键并单击简便得益于先进的用户交互的API and will work on most browser and OS combinations out there(Java示例):

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

如果你的组合还不支持,这一行动将只发出模拟按键,这又是Firefox无法听到的。在这种情况下,您需要使用您的语言工具来处理该问题(例如,Java中的Robot类)。

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