我正试着用红宝石到达google play developer控制台。但我得先登录。我试着这样做:
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时,我在click_button中的某个地方看到了输入密码文本。
我做错了什么,我该如何解决呢?
发布于 2016-05-22 19:18:37
我一直在探索更多,并发现这不是那么简单,我无法以任何方式登录机械化。
因此,我最终使用了瓦蒂尔,这是相当简单和简单的。下面是一个例子:
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希望能帮上忙。
https://stackoverflow.com/questions/37155148
复制相似问题