代码之家  ›  专栏  ›  技术社区  ›  Zia Qamar

访问外部链接时无法从Capybara中删除端口

  •  1
  • Zia Qamar  · 技术社区  · 7 年前

    每当我从应用程序中访问某个url时,在访问twitter后,就会转到 现在我想删除

    这是测试用例

    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\u system\u test\u case.rb

    Capybara.server_port = 3000
    Capybara.default_max_wait_time = 10
    Selenium::WebDriver::Chrome.driver_path = '/home/chromedriver'
    driven_by :selenium
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Thomas Walpole    7 年前

    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 (让水豚使用随机端口),除非您真正需要它(防火墙/路由问题)。