我相信您必须修补 selenium-webdriver,因为似乎没有内置方法来指定包含临时配置文件的目录。
背景
Seleium-webdriver(因此是 watir-webdriver)directory in \selenium-webdriver-2.26.0\lib\selenium\webdriver\firefox\profile.rb
使用以下方法创建临时 Firefox 配置文件:
def layout_on_disk
profile_dir = @model ? create_tmp_copy(@model) : Dir.mktmpdir("webdriver-profile")
FileReaper << profile_dir
install_extensions(profile_dir)
delete_lock_files(profile_dir)
delete_extensions_cache(profile_dir)
update_user_prefs_in(profile_dir)
profile_dir
end
临时文件夹由以下人员创建:
Dir.mktmpdir("webdriver-profile")
这是在tmpdir 库中定义的。对于该Dir.mktmpdir
方法,第二个可选参数定义父文件夹(即创建临时配置文件的位置)。如果未指定任何值,如在本例中,将在 中创建临时文件夹Dir.tmpdir
,在您的情况下是“tmp”文件夹。
解决方案
要更改创建临时文件夹的位置,您可以修改layout_on_disk
方法以在对Dir.mktmpdir
. 它看起来像:
require 'watir-webdriver'
module Selenium
module WebDriver
module Firefox
class Profile
def layout_on_disk
#In the below line, replace 'your/desired/path' with
# the location of where you want the temporary profiles
profile_dir = @model ?
create_tmp_copy(@model) :
Dir.mktmpdir("webdriver-profile", 'your/desired/path')
FileReaper << profile_dir
install_extensions(profile_dir)
delete_lock_files(profile_dir)
delete_extensions_cache(profile_dir)
update_user_prefs_in(profile_dir)
profile_dir
end
end
end
end
end
browser = Watir::Browser.new :ff
#=> The temporary directory will be created in 'your/desired/path'.