2016-10-26 2 views
2

Ich versuche, auf dieser Seite melden Sie sich an: https://www.optionslam.com/accounts/login/ den Code zu diesem Beitrag als Ausgangspunkt verwenden, Scrape password-protected website in RAnmelden Um Website mit RSelenium & PhantomJS in R, mehrere Instanzen der Klasse existieren

ich in der Lage gewesen, um die Login-Felder zu füllen, kann aber nicht auf den Login-Button klicken. Wenn Sie an der Quelle der Seite sehen, ist die Klasse der Login „roten Knopf“

<input type="submit" value="Log in" class="red-button"/> 

Es gibt jedoch eine andere Form an der Spitze der Seite, die auch die gleiche Klasse verwendet, und die clickElement () Befehl klickt darauf. Wenn ich die RSelenium-Dokumentation lese, finde ich keinen Weg, entweder nach der zweiten Instanz dieser Klasse zu suchen oder nach type = "submit" oder value = "Log In" zu suchen.

Hier ist mein Code:

library(RSelenium) 

pJS <- phantom() # start phantomjs 

appURL <- 'https://www.optionslam.com/accounts/login/' 
remDr <- remoteDriver(browserName = "phantomjs") 
remDr$open() 
remDr$navigate(appURL) 
remDr$findElement("id", "id_username")$sendKeysToElement(list("user")) 
remDr$findElement("id", "id_password")$sendKeysToElement(list("pass")) 
remDr$findElement("class name", "red-button")$clickElement() 

Vielen Dank für Ihre Hilfe.

+2

können Sie 'xpath' oder' css selectors' verwenden, so etwas wie 'remDr $ findElement (mit = 'xpath'," // input [@ class = 'red-button' und @value = 'Log in'] ")' <--- Ich habe das nicht getestet ist. – SymbolixAU

Antwort

1

zwei Optionen:

Verwenden findElements beiden Tasten zu erhalten und klicken Sie auf dem zweiten ein:

remDr$findElements("class name", "red-button")[[2]]$clickElement() 

oder andere Selektor-Methode verwenden, wie @SymbolixAU direkt das zweite Element schlägt und Ziel:

webElem <- remDr$findElement("css", ".red-button[value='Log in']") 
webElem$getElementAttribute("outerHTML") 

#[[1]] 
#[1] "<input type=\"submit\" value=\"Log in\" class=\"red-button\">" 

webElem$clearElement() 
Verwandte Themen