2015-10-18 89 views
1

我想寫機器人框架測試用例下載一個excel從一個網站自動文件。我想使用機器人腳本爲我的瀏覽器設置首選項,以便在我所需的目標目錄中自動下載文件而不問我!如何設置對於Firefox偏好機器人框架

我已經試過this solution;但它不起作用。

我也嘗試作爲this說,工作正常設置一個現有的Firefox的配置文件,但我希望能夠自動調整偏好。

有什麼想法?

正如@Sachin說,我寫了一個python腳本設置爲Firefox偏好以及:

from selenium import webdriver 
class WebElement(object): 
    @staticmethod 
    def create_ff_profile(path): 
     fp = webdriver.FirefoxProfile() 
     fp.set_preference("browser.download.folderList", 2) 
     fp.set_preference("browser.download.manager.showWhenStarting", False) 
     fp.set_preference("browser.download.dir", path) 
     fp.set_preference("browser.helperApps.neverAsk.saveToDisk", 'application/csv') 
     fp.update_preferences() 
     return fp 

並在機械手的場景中使用它:

*** Settings *** 
Library     Selenium2Library 
Library     Selenium2LibraryExtensions 
Library     OperatingSystem 
Library     ../../../Libraries/WebElement.py 
*** Variables *** 
${profileAddress}  C:\\Users\\user\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\VdtJKHal.default 
${destinationUrl}  http://www.principlesofeconometrics.com/excel.htm 
${browserType}   firefox 
${downloadDir}   C:\\Users\\user\\Desktop 
${acceptedTypes}  text/csv/xls/xlsx 
${itemXpath}   //*[text()="airline"] 
*** Test Cases *** 
My Test Method 
    log to console Going to open browser with custome firefox profile! 
    ${profile} = create_ff_profile ${downloadDir} 
    Open Browser ${destinationUrl} ${browserType} ff_profile_dir=${profile} 
    Maximize Browser Window 
    Click Element xpath=${itemXpath} 
    Sleep 10 
    Close Browser 

但我在方法_make_browser遇到錯誤TypeError: coercing to Unicode: need string or buffer, FirefoxProfile found圖書館_browsermanagement.py

我編輯的代碼,並刪除return fp,然後改變了機器人的測試情況是這樣的:

,並用它在機器人的場景:

*** Test Cases *** 
My Test Method 
    log to console Going to open browser with custome firefox profile! 
    create_ff_profile ${downloadDir} 
    Open Browser ${destinationUrl} ${browserType} ff_profile_dir=${profileAddress} 
    Maximize Browser Window 
    Click Element xpath=${itemXpath} 
    Sleep 10 
    Close Browser 

它去掉了異常,並設置我的偏好以及,但我仍然需要傳遞個人資料地址。

回答

2

我已經寫了下面的Python代碼來創建配置文件:

def create_profile(path): 
    from selenium import webdriver 
    fp =webdriver.FirefoxProfile() 
    fp.set_preference("browser.download.folderList",2) 
    fp.set_preference("browser.download.manager.showWhenStarting",False) 
    fp.set_preference("browser.download.dir",path) 
    fp.set_preference("browser.helperApps.neverAsk.saveToDisk",'application/csv') 
    fp.update_preferences() 

在測試用例使用上述功能如下:

${random_string} generate random string 3  
${path} Catenate SEPARATOR=\\ ${TEMPDIR} ${random_string} 
${profile}= create_profile ${path} 
open browser ${app_url} ff ff_profile_dir=${profile} 

它保存的Excel文件的路徑變量指定的位置。

+0

從什麼庫你得到'create_profile'關鍵字? –

+0

我已經在python文件中編寫了這個文件,並將其作爲庫包含在套件中。 –

+0

哦,是的!我現在明白了!我會試試看! –

-1

您可以從create_profile函數返回配置文件路徑,然後用它打開的瀏覽器。 確保刪除拆解測試目錄配置文件路徑/套件在打開的瀏覽器關鍵字

def create_profile(path): 
from selenium import webdriver 
fp =webdriver.FirefoxProfile() 
fp.set_preference("browser.download.folderList",2) 
fp.set_preference("browser.download.manager.showWhenStarting",False) 
fp.set_preference("browser.download.dir",path) 
fp.set_preference("browser.helperApps.neverAsk.saveToDisk",'application/csv') 
fp.update_preferences() 
return fp.path 

使用路徑

${random_string} generate random string 3  
${path} Catenate SEPARATOR=\\ ${TEMPDIR} ${random_string} 
${profile_path}= create_profile ${path} 
open browser ${app_url} ff ff_profile_dir=${profile_path} 
+0

你的答案與Sachin的 –

0

您的關鍵字應該路徑返回創建Firefox配置文件:

def create_profile(path): 
    from selenium import webdriver 
    fp =webdriver.FirefoxProfile() 
    fp.set_preference("browser.download.folderList",2) 
    fp.set_preference("browser.download.manager.showWhenStarting",False) 
    fp.set_preference("browser.download.dir",path) 
    fp.set_preference("browser.helperApps.neverAsk.saveToDisk",'application/csv') 
    fp.update_preferences() 
    return fp.path 

只有這樣你可以使用它:

${profile_path} Create Profile ${path} 
Open Browser ${app_url} ff ff_profile_dir=${profile_path}  
+0

完全相同'fp.path'與'path'參數相同;那麼,爲什麼要多加一層呢?順便說一句,我沒有使用'create_profile'方法;這是別人的答案。 –

+0

「fp.path」是創建ff配置文件的路徑。 「路徑」是文件夾下載文件的路徑。他們不一樣。 –