繁体   English   中英

如何使用 PHP 和 Facebook WebDriver 上传文件?

[英]How can I upload the file using PHP and Facebook WebDriver?

我在使用 Facebook WebDriver 的 Selenium 中使用 PHP 和 Behat(无貂)。 我正在处理我的最后一个测试用例,即上传保存在我的计算机上的本地文件(图像)(使用 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()

考虑以下 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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM