使用Watir登录Gmail时,代码无法自动填入邮箱及密码的问题求助
嘿,我一眼就看出你这儿的问题啦——你把两个完全独立的工具混在一起用了,难怪Watir打开的浏览器里不会自动填账号密码!
为啥你的代码不管用?
你写的Gmail.new("myaccount@gmail.com", "Password")是调用了gmail这个gem的API,它是直接和Gmail服务器后台交互的,完全不需要依赖浏览器。而Watir是用来操控浏览器的自动化工具,这俩根本不在一个频道上,所以gmail gem的操作不会影响到Watir打开的Chrome窗口。
用Watir实现浏览器登录Gmail的正确姿势
你得纯用Watir的方法来定位页面元素、填写内容,代码大概是这样的:
require 'watir' # 启动Chrome浏览器并打开Gmail登录页面 browser = Watir::Browser.new :chrome browser.goto 'https://mail.google.com' # 定位邮箱输入框,填入账号,然后点击下一步 browser.text_field(id: 'identifierId').set('myaccount@gmail.com') browser.button(id: 'identifierNext').click # 等待密码框加载完成(Google登录页是动态加载的,必须等元素出现) password_field = browser.text_field(name: 'Passwd') password_field.wait_until(&:present?) password_field.set('Password') # 点击登录按钮 browser.button(id: 'passwordNext').click
几个要注意的点
- Google的登录页面经常会更新元素的ID、name这些属性,如果上面的定位器不好使,你可以按F12打开浏览器开发者工具,自己重新定位元素。
- 现在Gmail登录基本都会触发验证码或者两步验证,纯自动化脚本大概率过不去,这种情况要么手动介入一下,要么考虑用Google的OAuth 2.0 API来做无浏览器的登录(不过这就和你用Watir做浏览器自动化的需求不一样了)。
- 千万别把明文密码写在代码里!最好用环境变量或者加密的配置文件来存密码,避免泄露。
内容的提问来源于stack exchange,提问作者jp2017
相关产品推荐
相关产品推荐

