RSelenium Select Dropdown/ComboBox 来自 Javascript 列表的值

RSelenium Select Dropdown/ComboBox Value from Javascript List

我正在尝试使用 RSelenium 从网站下载 csv 文件。我进入页面,这是一个 Crystal 报告查看器和 select 导出按钮的元素,然后单击该按钮。然后出现文件格式 selection 的导出 window。我能够找到下拉列表的元素,但我对列表的值有疑问。这些值似乎来自一个很长的 javascript 脚本,如下所示:

<script type="text/javascript" language="JavaScript">
`{"args":`

{"args":{"id":"CrystalReportViewer_exportUI","availableFormats":[{"name":"Crystal Reports (RPT)","value":"CrystalReports"},{"name":"PDF","value":"PDF"},{"name":"Microsoft Excel (97-2003)","value":"MSExcel"},{"name":"Microsoft Excel (97-2003) Data-Only","value":"RecordToMSExcel"},{"name":"Microsoft Word (97-2003)","value":"MSWord"},{"name":"Microsoft Word (97-2003) - Editable","value":"EditableRTF"},{"name":"Rich Text Format (RTF)","value":"RTF"},{"name":"Separated Values (CSV)","value":"CharacterSeparatedValues"},{"name":"XML","value":"XML"}]` `</script>

下拉框如下所示:

我能够找到与上述下拉框相关的元素。

当我单击上面的列表的下拉菜单时。当我在查看 HTML 元素的同时 select 值之一时,我 select 的值在 HTML 代码中得到更新——我假设Javascript 列表。我点击"Seperated Values (CSV)"后是这样的:

<div id="id_name" class="icontext" style="white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:249px">Separated Values (CSV)</div>

我尝试使用以下代码,但它不起作用:

WebElemFileFormat <- remDr$findElement(using = 'id', "id_name") WebElemFileFormat$clickElement() WebElemFileFormat$sendKeysToElement(list("Separated Values (CSV)"))

我读了这个 post 但不确定它如何转化为 RSelenium。非常感谢。

在做了更多研究之后,我决定采用不同的方法。如果有人遇到类似问题,我会保留它。我注意到在使用下拉框后,我可以使用向下箭头或选项卡在列表中向下移动。

我用下面的代码完成了上面问题中我想做的事情:

`WebElemFileFormat <- remDr$findElement(using = 'id', "id_name")
remDr$setImplicitWaitTimeout(milliseconds = 10000)
WebElemFileFormat$clickElement()
remDr$sendKeysToActiveElement(list(key = 'tab'))
remDr$sendKeysToActiveElement(list(key = 'tab'))
remDr$sendKeysToActiveElement(list(key = 'tab'))
remDr$sendKeysToActiveElement(list(key = 'tab'))
remDr$sendKeysToActiveElement(list(key = 'tab'))
remDr$sendKeysToActiveElement(list(key = 'tab'))
remDr$sendKeysToActiveElement(list(key = 'tab'))
remDr$sendKeysToActiveElement(list(key = 'enter'))
`

请注意,我决定使用制表符而不是向下箭头。由于某种原因,向下箭头不起作用。我希望这对某人有所帮助!