2016-12-06 161 views
0

我的老板让我从中国深度事故研究数据库中获取一些数据。我知道我需要先登录才能选择使用RSelenium和phantomjs来帮助我完成工作。使用RSelenium登录网站​​

我是一个HTML和JavaScript的初学者,基本上没有经验。为了完成任务,我从网站上搜索了很多东西来理解RSelenium。我可以使用它来正确登录任何其他网站。但是,对于此网站http://114.255.167.200:8092/cidasEN/extend/util_login_list.do,我无法使用sendKeysToElement将用户名或密码插入到元素中。

有关详细信息,我成功启动Selenium服务器,并可以登录另一个事故数据库vufo。

我的代码是

remDr$open(silent = T) 
remDr$navigate("https://www.vufo.de/interner-bereich/internal-area/?L=1") 
wxbox<- remDr$findElement("name","user") 
wxbox$sendKeysToElement(list(""))  
wxbox<- remDr$findElement("name","pass") 
wxbox$sendKeysToElement(list(""))  # Type password provided from GIDAS between inverted commas " " 
wxbutton<- remDr$findElement("name","submit") 
wxbutton$sendKeysToElement(list(key="enter")) 

我可以成功登录该网站,并抓住我想要的数据,如果我输入用户名和密码。但对于

remDr$open(silent = T) 
remDr$navigate("http://114.255.167.200:8092/cidasEN/extend/util_login_list.do") 
wxbox<- remDr$findElement("css selector","#name.b_1") 
wxbox$sendKeysToElement(list(""))   # Type username provided from GIDAS between inverted commas " " 
wxbox<- remDr$findElement("css selector","#password.b_1") 
wxbox$sendKeysToElement(list(""))  

我得到了错误:

Error: Summary: InvalidElementState 
Detail: An element command could not be completed because the element is in an invalid state (e.g. attempting to click a disabled element). 
class: org.openqa.selenium.InvalidElementStateException 
Further Details: run errorDetails method 

我认为问题是,这个网站与TD没有DIV写的。你可以按F12查看中文网站是否包含td/td的网站。

我不知道如何在td/td之间插入元素的元素。它似乎不同于div。我试图寻找答案。但我几乎找不到任何解决办法。

谢谢。

+0

您是否运行了错误说明的errorDetails方法? 'findElement'方法根本没有区别,无论布局是作为'table'还是'div'构建的。正如问题所述,目标元素似乎处于无效状态 - 很可能已被禁用。 –

+0

谢谢你的评论。其实我不知道如何运行errorDetails方法。如果目标元素处于无效状态,我该如何启用它?我曾经想过,也许我用错误的方式来定位元素,以便在使用“id”或“name”来找到它之后尝试css选择器。然而,结果是一样的,我仍然有错误。 –

回答

1
library(RSelenium) 
remDr<-remoteDriver() 
remDr$open(silent = T) 

remDr$navigate("http://114.255.167.200:8092/cidasEN/extend/util_login_list.do") 

wxbox<- remDr$findElement("css selector","#name.b_1")$clickElement() 

remDr$findElement("css selector","#name.b_1")$sendKeysToElement(list("a"))   # Type username provided from GIDAS between inverted commas " " 

wxbox<- remDr$findElement("css selector","#password.b_1")$clickElement() 

remDr$findElement("css selector","#password.b_1")$sendKeysToElement(list("a")) 

remDr$findElement("css selector","td:nth-child(5) img")$clickElement() 
+0

谢谢你的帮助,我只是想你的方式。但是,当我添加** $ clickElement()时,我仍然遇到了错误**'Summary:ElementNotVisible \t细节:元素命令无法完成,因为元素在页面上不可见。' –

+0

请尝试使用我的新代码在答案中。我编辑过 – Bharath