Ruby开发Selenium Bot时Chrome页面加载后自动关闭,求解决方案
解决Chrome浏览器自动关闭的问题
我明白你遇到的困扰了——脚本跑完页面加载后浏览器就直接自动关闭,根本没机会进行后续操作对吧?这其实是因为Ruby脚本执行到末尾时,driver对象会被自动销毁,关联的Chrome进程也就跟着终止了。下面给你两种实用的解决办法:
方法一:配置Chrome选项让浏览器保持打开
你可以给Chrome的配置选项加上detach参数,告诉Selenium在脚本执行完毕后不要关闭浏览器。修改后的代码如下:
require "selenium-webdriver" options = Selenium::WebDriver::Chrome::Options.new options.add_argument('--ignore-certificate-errors') options.add_argument('--disable-popup-blocking') options.add_argument('--disable-translate') # 添加这一行,让浏览器在脚本结束后保持运行状态 options.add_option("detach", true) driver = Selenium::WebDriver.for :chrome, options: options driver.navigate.to "https://google.com"
方法二:在脚本末尾添加阻塞代码
如果不想修改浏览器配置,也可以在脚本最后加一段让程序暂停执行的代码,这样脚本不会立刻结束,driver对象就不会被销毁,浏览器也就会一直打开。比如用gets等待你输入回车,或者用sleep设置固定等待时长:
方式1:等待用户输入回车后结束
require "selenium-webdriver" options = Selenium::WebDriver::Chrome::Options.new options.add_argument('--ignore-certificate-errors') options.add_argument('--disable-popup-blocking') options.add_argument('--disable-translate') driver = Selenium::WebDriver.for :chrome, options: options driver.navigate.to "https://google.com" # 等待你输入回车后,脚本才会结束 gets
方式2:固定时长休眠
require "selenium-webdriver" options = Selenium::WebDriver::Chrome::Options.new options.add_argument('--ignore-certificate-errors') options.add_argument('--disable-popup-blocking') options.add_argument('--disable-translate') driver = Selenium::WebDriver.for :chrome, options: options driver.navigate.to "https://google.com" # 休眠30秒,足够你完成后续操作 sleep(30)
两种方法里,方法一更适合需要长期保持浏览器打开进行操作的场景,方法二则适合临时调试时使用,你可以根据自己的需求来选~
内容的提问来源于stack exchange,提问作者user11345388
相关产品推荐
相关产品推荐

