2016-05-11 8 views
1

私はgoogle play developer consoleにルビーを使用しようとしています。しかし、まず私はログインする必要があります。私はこのようにしようとしています:Googleでログインして機械的にルビーに

def try_post(url, body = {}, headers = {}) 
    unless @agent #This just creates a new mechanize instance 
    setup 
    end 

    puts 'Logging in' 

    # Hardcoded for testing purposes 
    @agent.get 'https://accounts.google.com/ServiceLogin?service=androiddeveloper&passive=1209600&continue=https://play.google.com/apps/publish/%23&followup=https://play.google.com/apps/publish/#identifier' 

    form = @agent.page.forms.find {|f| f.form_node['id'] == "gaia_loginform"} 

    unless form 
    raise 'No login form' 
    end 

    form.field_with(:id => "Email").value = @config.email 

    form.click_button 
    form = @agent.page.forms.find {|f| f.form_node['id'] == "gaia_loginform"} 

    unless form 
    raise 'No login form' 
    end 

    form.field_with(:name => "Passwd").value = @config.password 

    form.click_button 

    if @agent.page.uri.host != "play.google.com" 
    STDERR.puts "login failed? : uri = " + @agent.page.uri.to_s 
    raise 'Google login failed' 
    end 

    # @agent.post(url, body) 
end 

しかし、これはすばらしく失敗します。私はいくつかの他の方法(Passwd-hiddenを埋め込み、idなどでフィールドを見つけようとしました)を試みましたが、運はありません。私はパスワードが最後にputs @agent.page.bodyを試してから入力されないと思いますclick_button私はHTMLのどこかにパスワードのテキストを入力します。

私は間違っていますが、どうすれば修正できますか?

答えて

1

私はもう少し詳しく掘り下げていますが、それほど簡単ではないことがわかりました。機械化ではログインできませんでした。

だから私はwatirを使用することになりました。それはかなり簡単で簡単でした。ここに例があります:

browser.goto LOGIN_URL 

browser.text_field(:id, 'Email').set @config.email 
browser.button(:id, 'next').click 

browser.text_field(:id, 'Passwd').wait_until_present 
browser.text_field(:id, 'Passwd').set @config.password 
browser.button(:id, 'signIn').click 

# Here I wait until an element on my target page is visible and then continue 
browser.link(:href, '#SOMETHING').wait_until_present 

希望します。

関連する問題