簡體   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