使用RSelenium设置只读字段的值

时间:2016-01-19 20:25:28

标签: r web-scraping rselenium

我正在使用R和RSelenium从网站获取一些数据,我必须首先填写表格。 我必须在表单中定义的一个元素是日期。

包含日期的框具有以下html代码:

<input readonly="readonly" name="Datei" id="Datei" onfocus="popUpCalendar(this, this,'dd/mm/yyyy');return false" maxlength="10" value="" style="width: 200px;" type="text">

我想将该日期设置为2016年1月1日或2016年1月1日,以符合所需的格式。

使用

进入元素后
webElem <- rd$findElement("id","Datei")

我尝试过这两种方法,但没有一种方法可行(因为该项目是“只读”,我认为):

webElem$value <- list("01/01/2016")

webElem$sendKeysToElement(list("01/01/2016"))

根据建议here,我尝试了

webElem$executeScript(script = "arguments[1].value=arguments[2]",args = list(webElem,"01/01/2016"))

Error:   Summary: UnexpectedAlertOpen
 Detail: A modal dialog was open, blocking this operation
 class: org.openqa.selenium.UnhandledAlertException

我的想法已经用完了,任何提示都非常受欢迎!

编辑添加

我发现(并张贴)了答案。不过,我想知道,如果有人知道更好的方法(例如使用httr)。

1 个答案:

答案 0 :(得分:1)

深入研究硒的例子,我发现了这个pearl:(翻译成R)

  rd$executeScript("document.getElementById('Datei').removeAttribute('readonly',0);")
  dt <- rd$findElement("id","Datei")
  dt$clearElement()
  dt$sendKeysToElement(list("01/01/2016"))

效果很好。离开这里,万一有人偶然发现同样的需要。