スクリプトは、NokogiriとWatirが常に同期していることを前提としているように見えます。これは正しくありません。
あなたがするとき:
page = Nokogiri::HTML.parse(browser.html)
Nokogiriは、その特定の時点でブラウザのhtmlを取得します。Watirがブラウザに変更を加えた場合(つまり、htmlを変更した場合)、Nokogiriはそれを認識しません。
Nokogiriでhtmlを解析するたびに、ブラウザの最新のhtmlを使用して新しいNokogiriオブジェクトを作成する必要があります。
説明する例:
require 'watir-webdriver'
require 'nokogiri'
b = Watir::Browser.new
b.goto 'www.google.ca'
page = Nokogiri::HTML.parse(b.html)
p page
#=> This will be the Google page
b.goto 'www.yahoo.ca'
p page
#=> This will still be the Google page
page = Nokogiri::HTML.parse(b.html)
p page
#=> This will now be the Yahoo page