在R中使用RSelenium和phantomjs登录网站,存在多类实例[英] Log In To Website Using RSelenium & phantomjs in R, Multiple Instances Of Class exist

问题描述

我正在尝试登录此页面:https://www.optionslam.com/accounts/login/ 使用本文中的代码作为起点,在R中抓取受密码保护的网站

我已经能够填充登录字段,但无法单击登录按钮.如果你看页面的来源,登录的类是"red-button"

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

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

这是我的代码:

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

本文地址:https://www.itbaoku.cn/post/1739911.html