访问外部时无法从 Capybara 移除端口 link
Cannot remove port from Capybara while visiting external link
每当我从我的应用程序访问一些 url 然后在访问 twitter 后转到 "twitter:3000"
现在我想删除 :3000 以便在我的测试用例中我可以成功访问外部 link 。我尝试了几种选择,但没有用。我在 Rails
中使用水豚
这是测试用例
test 'z' do
visit companies_url
login_twitter
end
def login_twitter
Capybara.run_server = false
Capybara.server_port = ''
Capybara.server_host = 'https://twitter.com'
visit 'https://twitter.com' #here it goes to **https://twitter.com:3000**
fill_in 'signin-email', with: 'email@email.com'
fill_in 'signin-password', 'pass'
page.find('a', :text => /\ALog in\z/).click
end
application_system_test_case.rb
Capybara.server_port = 3000
Capybara.default_max_wait_time = 10
Selenium::WebDriver::Chrome.driver_path = '/home/chromedriver'
driven_by :selenium
看起来你正在使用 Rails 5.1 系统测试,他们选择启用 Capybara.always_include_port = true
告诉 Capybara 插入应用程序所在的端口 运行每次 url 访问(除非明确指定了非默认端口)。要解决此问题并直接访问外部站点,您可以这样做
def login_twitter
Capybara.always_include_port = false
visit 'https://twitter.com' #here it goes to **https://twitter.com:3000**
fill_in 'signin-email', with: 'email@email.com'
fill_in 'signin-password', 'pass'
page.find('a', :text => /\ALog in\z/).click
Capybara.always_include_port = true
end
此外,我不确定您为什么要设置 Capybara.server_port = 3000
,这通常不是一个好主意,因为它会阻止您在 运行 测试时使用开发实例 运行。通常最好不要指定特定的 server_port
(让 Capybara 使用随机端口),除非您确实需要它(firewall/routing 问题)。
每当我从我的应用程序访问一些 url 然后在访问 twitter 后转到 "twitter:3000" 现在我想删除 :3000 以便在我的测试用例中我可以成功访问外部 link 。我尝试了几种选择,但没有用。我在 Rails
中使用水豚这是测试用例
test 'z' do
visit companies_url
login_twitter
end
def login_twitter
Capybara.run_server = false
Capybara.server_port = ''
Capybara.server_host = 'https://twitter.com'
visit 'https://twitter.com' #here it goes to **https://twitter.com:3000**
fill_in 'signin-email', with: 'email@email.com'
fill_in 'signin-password', 'pass'
page.find('a', :text => /\ALog in\z/).click
end
application_system_test_case.rb
Capybara.server_port = 3000
Capybara.default_max_wait_time = 10
Selenium::WebDriver::Chrome.driver_path = '/home/chromedriver'
driven_by :selenium
看起来你正在使用 Rails 5.1 系统测试,他们选择启用 Capybara.always_include_port = true
告诉 Capybara 插入应用程序所在的端口 运行每次 url 访问(除非明确指定了非默认端口)。要解决此问题并直接访问外部站点,您可以这样做
def login_twitter
Capybara.always_include_port = false
visit 'https://twitter.com' #here it goes to **https://twitter.com:3000**
fill_in 'signin-email', with: 'email@email.com'
fill_in 'signin-password', 'pass'
page.find('a', :text => /\ALog in\z/).click
Capybara.always_include_port = true
end
此外,我不确定您为什么要设置 Capybara.server_port = 3000
,这通常不是一个好主意,因为它会阻止您在 运行 测试时使用开发实例 运行。通常最好不要指定特定的 server_port
(让 Capybara 使用随机端口),除非您确实需要它(firewall/routing 问题)。