我想(ab)使用水豚網絡測試框架來自動化github上的一些任務,這些任務不能通過github API訪問,並且需要我登錄並點擊按鈕才能發送AJAX請求。如何在水豚中使用我自己的餅乾?
由於水豚/硒是一個測試框架,它有助於創建一個沒有cookie的臨時會話。我想要麼停止這樣做,否則我想知道如何將我的Cookie存儲加載到它創建的瀏覽器會話中。
所有我想要做的是這樣的:
#!/usr/bin/env ruby
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome
driver.navigate.to "https://github.com"
或者這樣:
#!/usr/bin/env ruby
require 'capybara'
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
session = Capybara::Session.new(:selenium)
session.visit "https://www.github.com"
在這兩種情況下,我得到了github.com着陸頁,你會看到一個已登錄瀏覽器中的用戶或隱身模式。我希望獲得登錄的登錄頁面,例如我自己啓動了一個Web瀏覽器並導航到該URL。
因爲我有github上的2FA設置,使得從github登陸頁面的登錄過程自動化有點煩人,所以我想避免自動登錄到github。我想要自動執行的任務不需要通過2FA重新進行身份驗證。
答:
對於MacOSX的+紅寶石+硒這個工程:
#!/usr/bin/env ruby
require 'selenium-webdriver'
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"debuggerAddress" => "127.0.0.1:20480"}, detach: false)
driver = Selenium::WebDriver.for :chrome, :desired_capabilities => caps
driver.navigate.to "https://github.com"
那麼火了鍍鉻與此:
% /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/Users/lamont/Library/Application\ Support/Google/Chrome --profile-directory=Default --remote-debugging-port=20480
顯然,路徑將需要進行調整,因爲它們'以OSX爲中心,並在其中擁有我的homedir。
還有在硒的webdriver寶石紅寶石它插入一個「分離」選項,進入戰鬥與「debuggerAddress」的錯誤:
/Users/lamont/.rvm/gems/ruby-2.2.4/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/remote/response.rb:70:in `assert_ok': unknown error: cannot parse capability: chromeOptions (Selenium::WebDriver::Error::UnknownError)
from unknown error: unrecognized chrome option: detach
的lib/selenium/webdriver/chrome/bridge.rb
文件進行編輯,以取那作爲一個快速黑客:
chrome_options['binary'] = Chrome.path if Chrome.path
chrome_options['nativeEvents'] = true if native_events
chrome_options['verbose'] = true if verbose
#chrome_options['detach'] = detach.nil? || !!detach
chrome_options['noWebsiteTestingDefaults'] = true if no_website_testing_defaults
chrome_options['prefs'] = prefs if prefs
我似乎已經找到了一個體面的頁面,介紹如何使用代碼片段注入ruby的chrome驅動程序中的選項,並在此處放置一個註釋:https://sites.google.com/a/chromium.org/chromedriver/capabilities – lamont
好吧,足夠接近我會更新我的問題與答案在紅寶石... – lamont
我會將此鏈接添加到答案,所以它更容易爲Ruby用戶可見。 – DuckPuncher