【问题标题】:How can I upload the file using PHP and Facebook WebDriver?如何使用 PHP 和 Facebook WebDriver 上传文件?
【发布时间】:2019-05-23 06:28:23
【问题描述】:

我正在使用 PHP 和 Behat(没有水貂)和 Selenium,使用 Facebook WebDriver。我正在处理我的最后一个测试用例,即上传保存在我的计算机上的本地文件(图像)(使用 Mac)。如何使用 PHP 和 Facebook WebDriver 上传文件?

我得到了“上传”按钮的元素,然后弹出窗口来选择文件。

$this>webDriver>setFileDetector(new\Facebook\WebDriver\Remote\LocalFileDetector());

// upload the file and submit the form
$this>webDriver>getKeyboard()>sendKeys("/Users/Guest/Documents/image.jpg/;

但这不起作用。

我也收到此错误:

致命错误:未捕获错误:调用 /Users/Guest/Documents/features/bootstrap/FeatureContext.php:232 中未定义的方法 Facebook\WebDriver\Remote\RemoteWebDriver::setFileDetector()

【问题讨论】:

    标签: php selenium selenium-webdriver behat


    【解决方案1】:

    考虑以下 html 元素。

    <input type="file" id="file_input"></input>
    

    您的上传代码将如下所示:

    <?php    
    use Facebook\WebDriver\Remote\LocalFileDetector;
    
    //getting the input element
    $fileInput = $driver->findElement(WebDriverBy::id('file_input'));
    
    //set the fileDetector
    $fileInput->setFileDetector(new LocalFileDetector());
    
    $filePath = 'D:\\work\\udhav.pdf';
    $fileInput->sendKeys($filePath);
    

    【讨论】:

      【解决方案2】:

      setFileDetector 是 RemoteWebElement 类的方法,而不是 RemoteWebDriver 类。您必须找到该元素,然后对其调用 setFileDetector()。看这个例子:

      来源:https://github.com/facebook/php-webdriver/wiki/Upload-a-file

        // getting the input element
        $fileInput = $driver->findElement(WebDriverBy::id('file_input'));
        // set the file detector
        $fileInput->setFileDetector(new LocalFileDetector());
        // upload the file and submit the form
        $fileInput->sendKeys($filePath)->submit();
      

      注意:“$fileInput->sendKeys($filePath)->submit();”这一行对我不起作用并且导致错误。我删除了“提交”函数调用并让它工作:“$fileInput->sendKeys($filePath);”。在这一行之后,您需要找到表单提交按钮并像点击任何其他表单一样单击它。这个 sendKeys 调用代替了单击浏览按钮并选择要上传的文件。如果您在此函数调用后截取屏幕截图,您可以在“浏览...”按钮旁边看到所选文件的名称,就像您在表单的手动测试中一样。

      关于该方法的文档链接: https://facebook.github.io/php-webdriver/community/Facebook/WebDriver/Remote/RemoteWebElement.html#method_setFileDetector

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-23
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-26
        • 2023-03-06
        相关资源
        最近更新 更多