使用 RSelenium 设置只读字段的值
set value of readonly field with 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")
我已经尝试过这两种方法,但其中 none 行得通(因为该项目是“只读的”,我认为):
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
)。
深入研究 selenium 示例,我发现了这个 pearl:(翻译成 R)
rd$executeScript("document.getElementById('Datei').removeAttribute('readonly',0);")
dt <- rd$findElement("id","Datei")
dt$clearElement()
dt$sendKeysToElement(list("01/01/2016"))
效果很好。把它留在这里,以防有人偶然发现同样的需求。
我正在使用 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")
我已经尝试过这两种方法,但其中 none 行得通(因为该项目是“只读的”,我认为):
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
)。
深入研究 selenium 示例,我发现了这个 pearl:(翻译成 R)
rd$executeScript("document.getElementById('Datei').removeAttribute('readonly',0);")
dt <- rd$findElement("id","Datei")
dt$clearElement()
dt$sendKeysToElement(list("01/01/2016"))
效果很好。把它留在这里,以防有人偶然发现同样的需求。