如何在 Robot Framework 中设置 FireFox 的首选项

Zei*_*zar 3 python selenium robotframework

我正在尝试在机器人框架中编写一个测试用例,以从网站自动下载一个 excel 文件。我想使用机器人脚本为我的浏览器设置首选项,以便在我想要的目标目录中自动下载文件,而无需询问我!

我已经尝试过这个解决方案;但它没有用。

我还尝试设置一个现有的 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
Run Code Online (Sandbox Code Playgroud)

并在机器人场景中使用它:

*** 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
Run Code Online (Sandbox Code Playgroud)

但是我TypeError: coercing to Unicode: need string or buffer, FirefoxProfile found_make_browserlibrary 的方法中出错了_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
Run Code Online (Sandbox Code Playgroud)

它删除了异常并设置了我的首选项,但我仍然需要传递配置文件地址。

小智 5

我编写了以下 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()
Run Code Online (Sandbox Code Playgroud)

在测试用例中使用上述函数如下:

${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}
Run Code Online (Sandbox Code Playgroud)

它将excel文件保存到路径变量中指定的位置。