我创建了这个包含大量信息的env.rb文件。我喜欢重构它以使其更具可读性。也许将一些代码提取到一个单独的文件中或将一些代码移动到它自己的类或模块文件中。但我不知道该怎么做。
env.rb
require 'page-object'
require 'page-object/page_factory'
require 'active_record'
World(PageObject::PageFactory)
current_directory = File.dirname __FILE__
web_config_file = current_directory + '/../../config/config.yml'
web_config = YAML.load_file web_config_file
BASE_URL = web_config['testApplicationBaseURL']
browser = Selenium::WebDriver.for :firefox
# Creating two cookies to the browser to avoid a dialog to appear
browser.navigate.to(BASE_URL)
visited_before_cookie = {
:name => 'visitedBefore',
:value => 'yes',
:path => '/',
:domain => 'xxxx.net',
:secure => false
}
saw_browser_suggestion_cookie = {
:name => 'sawBrowserSuggestion',
:value => 'yes',
:path => '/',
:domain => 'xxxx.net',
:secure => false
}
browser.manage.add_cookie(visited_before_cookie)
browser.manage.add_cookie(saw_browser_suggestion_cookie)
#hooks
Before do
@browser = browser
end
at_exit do
browser.close
end
我尝试将下面的Cookie创建部分移动到单独的文件中,但是"浏览器"变量变得不确定。我不知道如何范围。
browser = Selenium::WebDriver.for :firefox
# Creating two cookies to the browser to avoid a dialog to appear
browser.navigate.to(BASE_URL)
visited_before_cookie = {
:name => 'visitedBefore',
:value => 'yes',
:path => '/',
:domain => 'xxxx.net',
:secure => false
}
saw_browser_suggestion_cookie = {
:name => 'sawBrowserSuggestion',
:value => 'yes',
:path => '/',
:domain => 'xxxx.net',
:secure => false
}
browser.manage.add_cookie(visited_before_cookie)
browser.manage.add_cookie(saw_browser_suggestion_cookie)
我考虑过将钩子移动到hooks.rb文件,但是不会使用那些需要创建的cookie来设置局部变量浏览器。
#hooks
Before do
@browser = browser
end
at_exit do
browser.close
end
你会怎么做?你会使用文件或类或模块吗?请分享您的解决方案。
答案 0 :(得分:0)
如果最初在browser
中按照env.rb
的方式定义module BrowserConfigurator
visited_before_cookie = {
:name => 'visitedBefore',
:value => 'yes',
:path => '/',
:domain => 'xxxx.net',
:secure => false
}
saw_browser_suggestion_cookie = {
:name => 'sawBrowserSuggestion',
:value => 'yes',
:path => '/',
:domain => 'xxxx.net',
:secure => false
}
def self.create_required_cookies(browser)
browser.manage.add_cookie(visited_before_cookie)
browser.manage.add_cookie(saw_browser_suggestion_cookie)
end
end
,那么您需要将其作为参数传递给其他人在其他人中定义的代码文件(即从其他脚本运行)。
所以你可以,例如(并不一定是一个很好的例子),创建一个像
这样的模块env.rb
然后在BrowserConfigurator.create_required_cookies(browser)
内,请致电
hooks.rb
(免责声明:我在此处输入此代码而未对其进行测试,因此可能需要进行调整)
此外,由于范围限定,您想要移动到$ ./manage.py shell
> import myapp.models as mdls # 'mdls' or whatever you want, but short...
> mdls.SomeModel.objects.get(pk=100)
> # At this point save some changes in the model
> reload(mdls)
> mdls.SomeModel.objects.get(pk=100)
的两个钩子无法正确移动。另一方面,其他钩子通常可以放入单独的文件中。