2016-12-08 11 views
1

Start RSeleniumвыберите текстовое поле с RSelenium

library(RSelenium) 
RSelenium::startServer() 
pJS <- phantom() 
Sys.sleep(5) # give the binary a moment 
remDr <- remoteDriver(browserName = 'phantomjs') 
remDr$open() 

Перейти на сайт и немного подождать

remDr$navigate("http://ideal-scope.com/online-holloway-cut-adviser/") 
Sys.sleep(5) 

теперь, когда я пытаюсь найти элемент на текстовых полях

depthElem <- remDr$findElements("name","depth_textbox") 
    tableElem <- remDr$findElements("name","table_textbox") 
    crownElem <- remDr$findElements("name","crown_textbox") 
    pavilionElem <- remDr$findElements("name","pavilion_textbox") 

. .. просто дает мне кучу объектов, которые являются list()

Если я findElement вместо findElements я

Error: Summary: NoSuchElement 
Detail: An element could not be located on the page using the given search parameters. 

Как я могу выбрать эти текстовые поля? Почему я не могу выбрать их путем поиска имени?

+0

Метод 'findElements' возвращает пустой список, если нет элементов. На странице есть контент, который вам нужен в iframe. Прежде чем вы сможете искать элементы, вам нужно переключиться на iframe. – jdharrison

ответ

1

Метод findElements возвращает пустой список, если нет элементов. На странице есть контент, который вам нужен в iframe. Прежде чем вы сможете искать элементы, вам необходимо перейти на iframe:

remDr$navigate("http://ideal-scope.com/online-holloway-cut-adviser/") 
# get iframes 
webElems <- remDr$findElements("css", "iframe") 
# there is only one 
remDr$switchToFrame(webElems[[1]]) 

depthElem <- remDr$findElement("name","depth_textbox") 
# > depthElem$getElementAttribute("name") 
# [[1]] 
# [1] "depth_textbox" 
remDr$findElement("name","table_textbox") 
crownElem <- remDr$findElement("name","crown_textbox") 
pavilionElem <- remDr$findElement("name","pavilion_textbox") 

 Смежные вопросы

  • Нет связанных вопросов^_^