当前位置: 首页 > 面试题库 >

在R中访问Selenium API

逑彬炳
2023-03-14
问题内容

我对将Selenium与R一起使用很感兴趣。我注意到WebDriver(Selenium
2)API文档在此介绍了各种文档。在R的实现上是否做过任何工作。我将如何实现这一目标。在文档中,它记录了有关运行selenium服务器的信息,并且可以使用Javascript查询api。任何帮助将非常感激。


问题答案:

可以使用JsonWireProtocol访问Selenium 。

首先,通过以下命令从命令行启动Selenium服务器:

java -jar selenium-server-standalone-2.25.0.jar

可以按以下方式打开新的Firefox浏览器:

library(RCurl)
library(RJSONIO)
library(XML)

baseURL<-"http://localhost:4444/wd/hub/"
server<-list(desiredCapabilities=list(browserName='firefox',javascriptEnabled=TRUE))

getURL(paste0(baseURL,"session"),
       customrequest="POST",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       postfields=toJSON(server))

serverDetails<-fromJSON(rawToChar(getURLContent('http://localhost:4444/wd/hub/sessions',binary=TRUE)))
serverId<-serverDetails$value[[1]]$id

导航到谷歌。

getURL(paste0(baseURL,"session/",serverId,"/url"),
       customrequest="POST",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       postfields=toJSON(list(url="http://www.google.com")))

获取搜索框的ID

elementDetails<-fromJSON(rawToChar(getURLContent(paste0(baseURL,"session/",serverId,"/element"),
       customrequest="POST",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       postfields=toJSON(list(using="xpath",value="//*[@id=\"gbqfq\"]")),binary=TRUE))
       )

elementId<-elementDetails$value

搜索主题

rawToChar(getURLContent(paste0(baseURL,"session/",serverId,"/element/",elementId,"/value"),
       customrequest="POST",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       postfields=toJSON(list(value=list("\uE009","a","\uE009",'\b','Selenium api in R')))
       ,binary=TRUE))

返回搜索HTML

googData<-fromJSON(rawToChar(getURLContent(paste0(baseURL,"session/",serverId,"/source"),
       customrequest="GET",
       httpheader=c('Content-Type'='application/json;charset=UTF-8'),
       binary=TRUE
       ))
       )

获得建议的链接

gxml<-htmlParse(googData$value)
urls<-unname(xpathSApply(gxml,"//*[@class='l']/@href"))

关闭会议

getURL(paste0(baseURL,"session/",serverId),
       customrequest="DELETE",
       httpheader=c('Content-Type'='application/json;charset=UTF-8')
       )


 类似资料:
  • 从Android11开始,拥有READ_EXTERNAL_STORAGE权限的应用程序可以使用直接文件路径和本地库读取设备的媒体文件。这个新功能允许您的应用程序更顺利地与第三方媒体库一起工作。 问题是我无法从获得文件路径,那么我们应该如何读取无法访问/检索的文件路径呢?我不知道有没有办法从获取文件路径? 此外,文件说: null null 但是我不需要所有的文件访问权限,我只希望用户从中选择一个视

  • 问题内容: 我在JTabbedPane中的(多个)JScrollPane中有一个JTextArea。 我需要访问JTextArea。如果没有JScrollPane,则可以执行以下操作: 在JScrollPane中如何获取? 干杯,瞪羚。 问题答案: 这条线看起来很复杂,但是我 认为 可以做到这一点。 但是我认为将您的存储在一个。 因此,您可以执行以下操作: 创建一个新的是这样的: 希望这可以帮助。

  • 提前致谢

  • 在对象浏览器中,右键单击stats包中的,然后单击“编辑”显示: 我想知道源代码,因为命令有时生成值“v=...”,有时生成“w=...”。的帮助文件没有解释什么是V和W。任何帮助都将非常感谢。 我想要一个不需要从CRAN或其他地方下载R源代码的解决方案;也就是说,我想要一个GUI内的解决方案(特别是Revo R Ent)。

  • 问题内容: 我试图访问C中的击键。我可以访问字母数字键。如何访问,并重点? 另外,我读过某个地方,有时在控制台中输入文本时,操作系统会掩盖退格键。我想知道用户在哪里按退格键。这与知道何时按下’\ n’并不相同。GNU C.Ubuntu 11。 问题答案: Dietrich Epp在评论中回答:使用 ncurses 库。 您可能会制作一个X11客户端图形应用程序;在这种情况下,请使用图形工具包库,例

  • 我的BorderPane的中心有一个名为designView的堆栈窗格(FXML定义的堆栈窗格)。我试图在designView中获得一个可拖动的窗格。如果我将该窗格添加到rootView(我的BordePane)中,一切都很好。但是,如果我尝试将其添加到designView中,如下所示: 窗格在设计视图中显示正确,但不再可拖动。MouseEvents会触发,但窗格的位置没有更新。我认为问题在于la