RSelenium从Javascript列表中选择下拉列表/组合框值

问题描述:

我试图从使用RSelenium的网站下载csv文件。我到达Crystal Report Viewer页面,然后选择导出按钮的元素并单击该按钮。然后出现带有文件格式选择的导出窗口。我能够找到下拉列表的元素,但我遇到了列表值的问题。该值似乎是从一个很长的javascript脚本来像下面这样:RSelenium从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>

下拉框中如下所示:

enter image description here 我能找到相关的元素到上面的下拉框。

enter image description here

当我点击下拉菜单,上面显示的列表。当我在选择其中一个值时查看HTML元素时,我选择的值在HTML代码中得到更新 - 我从Javascript列表中假设。它看起来像下面后,我点击“分隔的数值(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)"))

我读到这后Selecting a javascript dropdown但不知道如何转换为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')) 
` 

请注意,我决定使用标签,而不是向下的箭头。由于某种原因,向下箭头不起作用。我希望这可以帮助别人!

+0

我有类似的问题,但要按名称选择下拉项目。它也不起作用。就你的箭头而言,也许你写了错误的名字。输入'selKeys'并查看名称;箭头是“down_arrow”等。 –