1

Alt + クリックを使用して、Firefox を「対象をファイルに保存」しようとしています。これは、自分で行うとFirefoxで機能します(Firefoxの設定を更新して、Alt +クリックでターゲットを保存できるようにしました)。Selenium IDE で試してみると、Click イベントの前に 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>
4

1 に答える 1

3

できません。

Selenium IDE は、JavaScript によって強化され、サポートされ、制限されています。

したがって、Selenium IDE (および古い Selenium エンジンである Selenium RC) で行うすべてのアクションは、「単なる」JavaScript であり、それと同じ機能を備えています。明らかに、ページで任意の JS を実行して「対象をファイルに保存」を強制することはできません。これはセキュリティ ホールになる可能性があります。これは、インターネット上のどのページでも、ブラウザーに任意のファイルのダウンロードを強制する可能性があるためです。

また、JSでボタンを押すことを実際にエミュレートして、Firefoxに「聞く」ようにするOSレベルのイベントにすることはできません。JS によって行われる場合、それは主にページ上の他の JS スクリプトがそれを知るための「単なる」ドキュメント レベルのイベントです。

この制限 (とりわけ) により、Selenium 開発者は Selenium RC を放棄し、可能であればブラウザーとのネイティブな対話を使用する Selenium WebDriver (Selenium 2 とも呼ばれます) を使用するようになりました。しかし、それでも信頼できる方法でファイルをダウンロードすることはできません。

とはいえ、Altキーを押して WebDriver をクリックするのは Advanced User Interactions API のおかげで簡単で、ほとんどのブラウザーと OS の組み合わせで動作します(Java の例)。

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

あなたの組み合わせがまだサポートされていない場合、このアクションはエミュレートされたキーの押下のみを発しますが、これもまた Firefox には聞こえません。その場合、それに対処する言語のツールが必要になります (たとえば、RobotJava のクラス)。

また、既存のテスト スクリプトを IDE から WebDriver のような Java または C# コードに簡単にエクスポートできます。

于 2013-02-08T16:50:18.270 に答える