2013-02-08 53 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#代碼。