我试图在机器人框架中编写测试用例,以便从网站自动下载excel文件。我想使用机器人脚本为我的浏览器设置首选项,以便在我想要的目标目录中自动下载文件而不要求我!
我试过this solution;但它没有用。
我还尝试将现有的firefox配置文件设置为this,说明工作正常,但我希望能够自动调整首选项。
有什么想法吗?
正如@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
但我在库TypeError: coercing to Unicode: need string or buffer, FirefoxProfile found
的方法_make_browser
中收到错误_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
它删除了异常并设置了我的首选项,但我仍然需要传递个人资料地址。
答案 0 :(得分:4)
我编写了以下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()
在testcase中使用以上函数如下:
${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文件保存到路径变量中指定的位置。
答案 1 :(得分:1)
您的关键字应返回创建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}
答案 2 :(得分:0)
如果它不起作用,请尝试使用mime-type-CSV文件的application / octet-stream。
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
答案 3 :(得分:-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}