尝试使用 RSelenium 检测和填充表单
Trying to detect and populate a form with RSelenium
我在自己的网站上有一个嵌入式表单,我想使用 RSelenium 填充和发送该表单。
第一步我似乎无法检测元素。显然我想填充并发送。
表单代码为:
<div id="form">
<form accept-charset="utf-8" method="POST" novalidate="">
<div class="form-group"><label for="form_Name" class="control-label">Full name<sup>*</sup></label><input required="" pattern="^***+(.****" class="form-control" title="Full name" id="form_Name" type="text" name="form_Name"></div>
<div class="form-group"><label for="form_Email" class="control-label">Email address<sup>*</sup></label><input required="" class="form-control" title="Email address" id="form_Email" type="email" name="form_Email"></div>
<div class="form-group"><label for="form_Company" class="control-label">Company name<sup>*</sup></label><input class="form-control" title="Company name" required="" id="form_Company" type="text" name="form_Company"></div>
<div class="form-group"><label for="custom_Message" class="control-label">Message</label><textarea class="form-control" title="Message" id="custom_Message" name="custom_Message"></textarea></div>
<div><input class="btn-large btn-inverse btn" type="submit" value="Submit"></div>
</form>
</div>
我已经尝试了所有选项:
remDr$findElement()
但得到同样的错误:
Error: Summary: NoSuchElement
Detail: An element could not be located on the page using the given search parameters.
服务器已正常运行 - 我已成功截取网站页面。
任何人都可以帮助我如何检测表单元素,以便我可以填充所有元素并发送吗?
你没有提到你用 findElement()
尝试过的东西。这是一个最小的工作示例,其中包含用于查找和填充 "Full Name" 框的表单和代码。首先,我将表单的 HTML 代码写入一个临时文件:
html <- '<div id="form">
<form accept-charset="utf-8" method="POST" novalidate="">
<div class="form-group"><label for="form_Name" class="control-label">Full name<sup>*</sup></label><input required="" pattern="^***+(.****" class="form-control" title="Full name" id="form_Name" type="text" name="form_Name"></div>
<div class="form-group"><label for="form_Email" class="control-label">Email address<sup>*</sup></label><input required="" class="form-control" title="Email address" id="form_Email" type="email" name="form_Email"></div>
<div class="form-group"><label for="form_Company" class="control-label">Company name<sup>*</sup></label><input class="form-control" title="Company name" required="" id="form_Company" type="text" name="form_Company"></div>
<div class="form-group"><label for="custom_Message" class="control-label">Message</label><textarea class="form-control" title="Message" id="custom_Message" name="custom_Message"></textarea></div>
<div><input class="btn-large btn-inverse btn" type="submit" value="Submit"></div>
</form>
</div>
'
tmp <- tempfile(fileext = ".html")
cat(html, file = tmp)
加载 RSelenium
,导航到页面,找到表单元素并填充它:
library(RSelenium)
rD <- rsDriver()
remDr <- rD[["client"]]
remDr$navigate(paste0("file://", tmp))
# Find and populate the field
webElem <- remDr$findElement(using = "id", "form_Name")
webElem$sendKeysToElement(list("Foo Bar"))
# Close browser
remDr$close()
您可以参考 https://ropensci.org/tutorials/rselenium_tutorial/ 等资源了解更多信息。
我在自己的网站上有一个嵌入式表单,我想使用 RSelenium 填充和发送该表单。
第一步我似乎无法检测元素。显然我想填充并发送。
表单代码为:
<div id="form">
<form accept-charset="utf-8" method="POST" novalidate="">
<div class="form-group"><label for="form_Name" class="control-label">Full name<sup>*</sup></label><input required="" pattern="^***+(.****" class="form-control" title="Full name" id="form_Name" type="text" name="form_Name"></div>
<div class="form-group"><label for="form_Email" class="control-label">Email address<sup>*</sup></label><input required="" class="form-control" title="Email address" id="form_Email" type="email" name="form_Email"></div>
<div class="form-group"><label for="form_Company" class="control-label">Company name<sup>*</sup></label><input class="form-control" title="Company name" required="" id="form_Company" type="text" name="form_Company"></div>
<div class="form-group"><label for="custom_Message" class="control-label">Message</label><textarea class="form-control" title="Message" id="custom_Message" name="custom_Message"></textarea></div>
<div><input class="btn-large btn-inverse btn" type="submit" value="Submit"></div>
</form>
</div>
我已经尝试了所有选项:
remDr$findElement()
但得到同样的错误:
Error: Summary: NoSuchElement
Detail: An element could not be located on the page using the given search parameters.
服务器已正常运行 - 我已成功截取网站页面。
任何人都可以帮助我如何检测表单元素,以便我可以填充所有元素并发送吗?
你没有提到你用 findElement()
尝试过的东西。这是一个最小的工作示例,其中包含用于查找和填充 "Full Name" 框的表单和代码。首先,我将表单的 HTML 代码写入一个临时文件:
html <- '<div id="form">
<form accept-charset="utf-8" method="POST" novalidate="">
<div class="form-group"><label for="form_Name" class="control-label">Full name<sup>*</sup></label><input required="" pattern="^***+(.****" class="form-control" title="Full name" id="form_Name" type="text" name="form_Name"></div>
<div class="form-group"><label for="form_Email" class="control-label">Email address<sup>*</sup></label><input required="" class="form-control" title="Email address" id="form_Email" type="email" name="form_Email"></div>
<div class="form-group"><label for="form_Company" class="control-label">Company name<sup>*</sup></label><input class="form-control" title="Company name" required="" id="form_Company" type="text" name="form_Company"></div>
<div class="form-group"><label for="custom_Message" class="control-label">Message</label><textarea class="form-control" title="Message" id="custom_Message" name="custom_Message"></textarea></div>
<div><input class="btn-large btn-inverse btn" type="submit" value="Submit"></div>
</form>
</div>
'
tmp <- tempfile(fileext = ".html")
cat(html, file = tmp)
加载 RSelenium
,导航到页面,找到表单元素并填充它:
library(RSelenium)
rD <- rsDriver()
remDr <- rD[["client"]]
remDr$navigate(paste0("file://", tmp))
# Find and populate the field
webElem <- remDr$findElement(using = "id", "form_Name")
webElem$sendKeysToElement(list("Foo Bar"))
# Close browser
remDr$close()
您可以参考 https://ropensci.org/tutorials/rselenium_tutorial/ 等资源了解更多信息。