1

我正在尝试使用 Alt+Click 让 Firefox“目标另存为”。当我自己这样做时,这在 Firefox 中有效(我已经更新了 Firefox 设置以启用 Alt+click 以将目标另存为)。当我在 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>
4

1 回答 1

3

你不能。

Selenium IDE 由 JavaScript 提供支持、支持和限制。

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

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

这种限制(以及许多其他限制)导致 Selenium 开发人员放弃了 Selenium RC,转而使用 Selenium WebDriver(也称为 Selenium 2),如果可以的话,它使用与浏览器的本机交互。但即使这样也不能以可靠的方式下载文件。

也就是说,Alt由于高级用户交互 API,按下键并单击 WebDriver 很简单,并且可以在大多数浏览器和操作系统组合上运行(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 回答