2016-09-29 2 views
0

Ich versuche ein Skript zu erstellen, das sich auf Stellen auf LinkedIn bewerben wird. Es kann sich erfolgreich anmelden und nach Jobs suchen, Elemente sammeln, die das spezielle Symbol "linkedIn-apply" enthalten, und hier beginnen die Probleme. Sobald es auf eines von denen klickt, lädt es erfolgreich die Seite des Job-Postings, aber danach kann es KEINEN scheinen, irgendetwas zu lokalisieren.Selenium kann nichts finden, nachdem ich den Link geklickt und den Rahmen aktualisiert habe

Um weitere Informationen hinzuzufügen, öffnet LinkedIn beim Klicken auf eine Stellenanzeige automatisch die Buchung in einem neuen Tab. Ist es möglich, dass der Treiber immer noch auf der Hauptseite ist und nicht sieht, was auf der anderen Registerkarte ist?

Gesamte Datei:

require 'selenium-webdriver' 
require 'byebug' 

caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"excludeSwitches" => [ "--ignore-certificate-errors" ]}) 
driver = Selenium::WebDriver.for :chrome, :switches => %w[--test-type] 
driver.navigate.to("https://www.linkedin.com/uas/login?goback=&trk=hb_signin") 
# driver.switch_to.frame(0) 
driver.find_element(:name, "session_key").send_keys("someuser") 
driver.find_element(:name, "session_password").send_keys("somepassword") 
driver.find_element(:name, "signin").click() 
driver.switch_to.frame(0) 
sleep 2 
driver.find_element(:link_text, "Jobs").click() 
sleep 2 
e = driver.find_elements(:class, "in-apply-icon") 
if e.empty? 
    driver.find_element(:class, "expand-button").click 
else 
    e.each do |posting| 
    posting.click 
    sleep 10 
    driver.switch_to.frame(0) 
    sleep 10 
    # THIS is where it gets stuck. It cannot find the 'apply button'. I have tried 
using :id and alas, no luck. I have tried finding other things and no luck. 
     driver.find_element(:class, "apply-button").click 
     sleep 5 
     driver.find_element(:id, "file-browse-input").send_keys(somepath) 
     sleep 5 
     driver.find_element(:id, "send-application-button").click 
     #find and click on apply 
     #upload resume 
     #submit 
     #hit x button/leave 
     #hit back button 
     end 
    end 

Der Code nach unten hin nicht abgeschlossen ist, bin ich davon bewusst. Ich kann nicht einmal vorbeikommen, indem ich auf den Anwenden-Knopf klicke, also ist es zu diesem Zeitpunkt nicht wichtig.

+0

Ich schätze, das Element, das Sie gefunden haben, wurde veraltet oder nicht zugänglich, da die Seite aktualisieren kann, sobald Sie sich für einen Auftrag bewerben. Wenn das der Fall ist, müssen Sie die Schaltfläche anwenden nach jedem Klick finden. Gibt es einen Fehler? Teilen Sie bitte – Siva

+0

@Siva Der einzige Konsolenfehler ist der, der besagt, dass es kein solches Element gibt. –

Antwort

2

Stellen Sie sicher, wenn ein Rahmen vorhanden ist, wechseln Sie zum richtigen Rahmen und suchen Sie das Element. Wenn Sie zu einem Bild wechseln, das auf Null indexiert ist, gelangen Sie zum Standardbild.

+0

Ich finde den Rahmen in den Chrome-Dev-Tools eigentlich nicht. Ich habe unter jede Elternklasse des Button-Elements geschaut und es gibt kein Frame-Tag irgendwo im Dokument. –

+0

Das sind gute Nachrichten. Warum versuchen Sie also, über Ihren Codetreiber zu einem Frame zu wechseln.switch_to.frame (0)? –

+0

Ich habe gerade Ihr Szenario in Linked In überprüft. Wenn Sie auf eine Stellenausschreibung klicken, wird sie in einem neuen Fenster geöffnet. Sie müssen zu diesem neuen Fenster wechseln und dann den Anwenden-Button finden (schauen Sie, wie Sie in Ruby Selen zu einem neuen Fenster wechseln). Wenn ich das gleiche Szenario wie Ihres gesammelt habe, sollten Sie das Problem lösen. –

Verwandte Themen