我正在尝试使用RSelenium
包自动化登录网站并执行某些操作。我已经成功登录,点击了一些按钮,但是在执行页面上的jQuery
函数时遇到了困难。有一个下拉框,它使用jQuery
函数填充其中的数据。我不确定如何执行此函数。页面源代码(包括jQuery
函数)如下:
<input disabled="disabled" id="stuff" name="stuff" style="width:100%" type="text" /><script>
jQuery(function(){jQuery("#stuff").kendoDropDownList({"change":disableNext,"dataSource":{"transport":{"read":{"url":"/StuffInfo/GetStuff","data":filterStuff},"prefix":""},"serverFiltering":true,"filter":[],"schema":{"errors":"Errors"}},"autoBind":false,"optionLabel":"Select court...","cascadeFrom":"state"});});
</script>
<script>
下拉菜单的名称是stuff
,我正在使用以下代码来访问它:
library("RSelenium")
startServer()
mybrowser <- remoteDriver()
mybrowser$open()
mybrowser$navigate("<URL>")
wxChooseStuff <- mybrowser$findElement(using='id',"stuff")
当我尝试执行以下命令时:
wxChooseStuff$clickElement()
我遇到了以下错误:
Error: Summary: ElementNotVisible
Detail: An element command could not be completed because the element is not visible on the page.
class: org.openqa.selenium.ElementNotVisibleException
我希望点击可以自动填充下拉框中的数据。
请问如何使用RSelenium
执行jQuery函数,有任何指针都会非常感激。
即使我可以使用其他包执行jQuery
函数,也没关系。我只想执行这个函数并点击元素。
PS - 我不是网页开发人员,如果我问了一个愚蠢的问题,请原谅我。
编辑:
按照建议,我尝试了以下代码:
在此命令中,我只包含了script
标签中完整的文本,并将所有双引号("
)替换为单引号('
)。
mybrowser$executeScript(script = "jQuery(function(){jQuery('#stuff').kendoDropDownList({'change':disableNext,'dataSource':{'transport':{'read':{'url':'/StuffInfo/GetStuff','data':filterStuff},'prefix':''},'serverFiltering':true,'filter':[],'schema':{'errors':'Errors'}},'autoBind':false,'optionLabel':'Select court...','cascadeFrom':'state'});});")
wxChooseStuff <- mybrowser$findElement(using='id',"stuff")
mybrowser$executeScript(script = "arguments[0].hidden = false;",
args = list(wxChooseStuff))
wxChooseStuff$clickElement()
但我收到了以下错误:
Error: Summary: ElementNotVisible
Detail: An element command could not be completed because the element is not visible on the page.
class: org.openqa.selenium.ElementNotVisibleException
看起来这个元素仍然没有被找到。