2016-08-12 143 views
1

我試圖從使用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。提前謝謝了。

回答

3

在做了一些更多的研究後,我決定採用不同的方法。如果有人遇到類似問題,我會保留這一點。我注意到,在使用下拉框後,我可以使用向下箭頭或製表符向下移動列表。

我用下面的代碼來完成我想要的東西在上面的問題:

`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」等。 –