Ich versuche, ein Skript in Ruby zu schreiben, das automatisch Coupons auf einer Webseite für mich Clip wird. Diese Seite ist: Stop and Shop Coupons PageIch lerne Ruby und verwende Watir, um ein Coupon-Clipping-Projekt zu erstellen. Ich habe Probleme beim Durchlaufen des Prozesses, obwohl
Was ich bisher habe, wird den Browser (Firefox) öffnen und auf die Coupons Seite auf meinem Konto gehen, aber nur einen Coupon klicken und dann schließt das Skript. Ich habe versucht While Loops, habe ich versucht, existiert? und alles, was ich online finden konnte, und ich kann nicht erreichen, dass es für alle Instanzen des Buttons '+ load to card' kontinuierlich klammert.
schrieb ich vor einer Weile ein Skript für die Publix Website mit der Website: Publix Coupon Page und es funktionierte gut. Um „clip“ Früher habe ich nur:
b.buttons(:class => 'dc-clip-btn').each do |b|
b.click
sleep 2
end
Ich brauchte die „Schlaf“, weil manchmal die Seite auf dem Clip hängen würde und das Skript würde schließen. Als ich das gleiche auf der Stop & Shop-Seite versuchte, funktionierte es überhaupt nicht. Ich musste 'Button' zu 'Link' und ': Class' zu ': Text' ändern, um es sogar zu einem Clip zu machen.
require 'rubygems'
require 'watir'
require 'watir-webdriver'
b = Watir::Browser.new :firefox, :profile => 'default'
b.goto 'https://stopandshop.com/dashboard/coupons-deals/#/coupons-and-deals/exclusive-coupons'
l = b.link :text => '+ load to card'
sleep 3
l.when_present.click
Ich habe versucht,
l.exists?
l.click
, die nur auf eine Instanz arbeiten. Ich habe das when_present wie oben gezeigt gemacht. Ich habe sogar eine While-Schleife benutzt, um l.click zu "machen". Ich habe meine Ressourcen zu diesem Zeitpunkt sowie meine Geduld erschöpft. Jede Hilfe wird sehr geschätzt. Vielen Dank!
EDIT:
Ich habe festgestellt, dass, wenn ich die folgenden: Index => 1 am Ende der Leitung
l = b.link :text => '+ load to card', :index => 1
dann wird es zu diesem bestimmten Punkt im Array navigieren und klicken Sie auf, dass Verknüpfung. Also, ich denke, an dieser Stelle brauche ich Hilfe, um zu versuchen, das Array zu durchqueren und auf all diese Links zu klicken.
EDIT 2: Ich hatte die Hoffnung zu posten, ob die Vorschläge funktionierten, aber ich begann plötzlich in ein Problem zu laufen, wenn die Seite geladen wird, bin ich wie gewohnt eingeloggt, aber plötzlich meldet es mich für Nein Grund und Weiterleitungen zu
https://stopandshop.com/?DPSLogout=true
EDIT 3: Das Edit 2 Problem wurde behoben. Es war ein Problem mit Berechtigungen/Cookies in meinem Browser. Keine der Vorschläge funktioniert jedoch.
SOLUTION
while l.exists? do
l.click
l = b.link :text => '+ load to card', :index => 0+1
end
Können Sie den vollständigen Code zeigen Sie, dass verwenden arbeitet mit dem: index => 1. –
l = b.link: text => '+ auf Karte laden',: index => 1 –
Wenn Sie eine Lösung für Ihre Frage haben, die in keiner der Antworten enthalten ist, sollten Sie Ihre eigene Frage beantworten und markieren als richtig. Kein Schaden in diesem –