2016-12-08 105 views
1

开始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") 

元素。 ..just给了我一堆对象,它们是list()

如果我做的,而不是findElementfindElements得到

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")