无法使用RSelenium填充表单,无法找到元素

时间:2018-03-12 17:04:49

标签: r selenium selenium-webdriver web-scraping rselenium

我正在尝试填写登录表单。

以下是重现错误的代码:

library(RSelenium)
require(XML)

RSelenium::startServer()
remDr <<- remoteDriver()
remDr$open()

appURL <- "https://www.schwab.com/public/schwab/nn/login/login.html&lang=en"
remDr$navigate(appURL)

remDr$findElement("id", "LoginId")$sendKeysToElement(list("username"))

这是收到的错误消息: Selenium message:Unable to locate element: #LoginId

我尝试过使用xpath和css,结果相同。我认为这个问题与使用框架的页面有关,所以remDr不能&#34;看到&#34;登录框。

然后我运行此代码:

webElem <- remDr$findElements(value = "//iframe")
sapply(webElem, function(x){x$getElementAttribute('name')})
[[1]]
[1] "loginIframe"

[[2]]
[1] ""


remDr$switchToFrame(1)
remDr$findElement("id", "LoginId")$sendKeysToElement(list("username"))

收到相同的错误消息: Selenium message:Unable to locate element: #LoginId

有关如何让远程浏览器找到登录框的任何建议吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

你是对的 - 这是框架的问题。以下代码对我有用。

iframe <- remDr$findElement("xpath", "*//iframe[@id = 'loginIframe']")
remDr$switchToFrame(iframe)
remDr$findElement("id", "LoginId")$sendKeysToElement(list("username"))