[英]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.