Я пытаюсь автоматизировать процесс входа в систему на веб-сайте и выполнения некоторого процесса на нем с использованием пакета RSelenium
. Я смог войти в систему, нажимать кнопки здесь и там, но я застрял при выполнении функции jQuery
на странице. Существует раскрывающийся список, который заполняет данные в нем с помощью функции jQuery
. Я не уверен, как выполнить эту функцию. Исходный код страницы (в том числе функции jQuery
) выглядят следующим образом:Выполнение функции jQuery с использованием пакета RSelenium
<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
Я надеялся, что щелчок будет автоматически заполнять данные в выпадающем меню.
Любые указатели на то, как выполнить функцию jQuery с использованием RSelenium
, будут очень признательны.
Даже если я могу выполнить функцию jQuery
, используя другой пакет, это будет нормально. Я хотел бы просто выполнить эту функцию и нажать на элемент.
PS - Я не веб-разработчик, поэтому простите меня, если я задам глупый вопрос.
EDIT:
Я попытался следующий код, согласно предложению:
В этой команде я просто включить полный текст, заключенный в 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
Похоже, что элемент по-прежнему не найден.
Можно ли дать веб-сайт вы заинтересованы в так что это немного легче воспроизводить? – Dason
Я на самом деле делаю это на внутреннем тестовом веб-сайте, поэтому публикация ссылки будет невозможна, извините :( – Patthebug
Это может быть дикая охота на гуси, но возможно ли, что есть два идентификатора, которые идентичны? вызвал у меня головные боли с Selenium до этого, когда он продолжал пытаться действовать на id, который находился под div и «не был видимым», в то время как я пытался заставить его щелкнуть по другому элементу с одним и тем же идентификатором. – Joy