2016-09-13 29 views
0

我正在使用無頭瀏覽器(phantomjs)與水貂一起在我的網站上執行一些功能測試。
現在在此設置下,文件無法定期下載,例如:點擊鏈接。所以我必須從鏈接按鈕中提取網址,然後手動下載文件。
有沒有辦法模擬水貂中的鏈接/按鈕點擊?

正如我剛纔所說,有時沒有爲下載沒有鏈接(),但在表格一個按鈕(例如:輸入數據形式的報告,並接受在提交報告文件) 。

所以我需要做的是模擬點擊鏈接或按鈕並請求提取數據本來發送,並使用這些數據來手動下載該文件。

有沒有辦法做到這一點?
注意:我使用guzzle實際下載文件。

+0

您應該有一個來自Mink的find方法,您可以使用它來查找元素,此方法將返回一個對象,然後您可以使用click或者您可以獲得應該爲您提供所需url的href屬性。對於點擊,您應該使用CSS查找並單擊。 – lauda

+0

我知道,這就是爲什麼指出它不一定是一個鏈接。爲文件發送的請求甚至可以是「POST」。 – user2268997

回答

1

嗯......我不知道你是否解決了這個問題,只能作爲典型水貂方法的替代品。由於Phantomjs是一個基於JavaScript的瀏覽器引擎,你用JavaScript嘗試過嗎?

你可以嘗試這樣的事:

public function getElementHref($element) 
{ 
    /* @var FeatureContext $this */ 
    $function = "(function(){ 
     //Javascript method to get the href. 
    })()"; 
    try { 
     return $this->featureContext->getSession()->evaluateScript($function); 
    } catch (Exception $e) { 
     throw new Exception('Element not found'); 
    } 
} 

你可以找到在JavaScript這裏做到這一點的方法:How to get anchor text/href on click using jQuery?

然後使用URL用的file_get_contents(根據文件類型)返回,而已。

+0

我採取了另一種方法,但是這應該起作用。 – user2268997