在 R 中使用 RSelenium 和 phantomjs 登录网站,存在 Class 的多个实例

Log In To Website Using RSelenium & phantomjs in R, Multiple Instances Of Class exist

我正在尝试登录此页面:https://www.optionslam.com/accounts/login/ using the code on this post as a starting point, Scrape password-protected website in R

我已经能够填充登录字段,但无法单击登录按钮。如果查看页面的源代码,登录的 class 是 "red-button"

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

但是,页面顶部还有另一个表单也使用相同的 class,clickElement() 命令正在单击它。阅读 RSelenium 文档,我无法找到一种方法来搜索此 class 的第二个实例或根据 type="submit" 或 value="Log In".[= 查找它14=]

这是我的代码:

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()

感谢您的帮助。

两个选项:

使用findElements获取两个按钮并点击第二个:

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

或使用@SymbolixAU 建议的另一种选择器方法并直接定位第二个元素:

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()