【问题标题】:Create and upload a file on selenium grid在 selenium 网格上创建和上传文件
【发布时间】:2013-04-25 02:15:02
【问题描述】:

我拥有的一个测试用例是将文件上传到应用程序。没有网格,这可以通过创建一个虚假文件并获取文件的绝对路径并填写输入字段并单击上传来轻松完成。但是,当我使用网格时,文件不在托管节点的机器上。无论如何将文件发送到节点或告诉节点创建文件并获取绝对路径。

【问题讨论】:

    标签: java selenium-webdriver selenium-grid


    【解决方案1】:

    一旦你知道怎么做,其实很简单,只需设置一个本地文件检测器。

    import org.openqa.selenium.remote.LocalFileDetector
    import org.openqa.selenium.remote.RemoteWebDriver
    
    WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.firefox());
    driver.setFileDetector(new LocalFileDetector())
    

    然后照常上传,Selenium 将通过网络将文件发送到节点。

    【讨论】:

    • 文件是在节点还是本地创建的?
    • 在上面的例子中,文件将在运行测试的机器上。然后文件将通过线路发送到网格,然后发送到节点,以便节点可以上传文件。
    • 被开发者的幽默打动了——只有两个 FileDetector 实现:一个提到 LocalFileDetector,另一个是 UselessFileDetector “什么都找不到” :)
    • 挑剔 - 无法在驱动程序对象上调用 setFileDetector 但驱动程序需要向下转换为 RemoteWebDriver - ((RemoteWebDriver)driver).setFileDetector(new LocalFileDetector());
    【解决方案2】:

    您可以在本地计算机上创建文件时以正常方式执行此操作。见下文,

    File file = new File("\\\\00.00.00.00\\c$\\somefile.txt");
    file.createNewFile();
    

    这将在远程计算机的“C”驱动器中创建一个名为 somefile.txt 的文件。将 IP 地址更改为您的远程计算机。

    【讨论】:

    • hmm.. 但是当我在 selenium 网格中运行它时,节点有点随机吧?我不知道它要运行哪个节点
    • 您可以编写一个方法并在需要时在测试方法中调用它。它独立于节点。
    • 除非远程机器不是 Windows,因此既没有安装“C”驱动器也没有安装 samba
    猜你喜欢
    • 2019-01-30
    • 2020-08-29
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2016-08-29
    • 2023-04-09
    相关资源
    最近更新 更多