RSelenium学习笔记(一)

一、介绍

RSeleium的目标是让R更容易的连接Selenium Server。 RSelenium绑定了R与Selenium Webdriver API。详细介绍见 官方原文


二、如何连接Selenium Server

  1. 下载并配置Selenium和WebDrivers
  2. 在Windows的command line中,定位到Selenium jar包所在文件夹,输入命令: java -jar selenium-server-standalone-x.xx.x.jar

RSelenium学习笔记(一)_第1张图片

  1. 在R console中, 使用remoteDriver函数初始化连接对象,然后用open方法创建连接并打开浏览器。
library(RSelenium)
remDr <- remoteDriver(browserName = "firefox") 
remDr$open() #如果报错,则很可能是WebDrivers的路径没有添加到环境变量中


三、Relenium函数与方法分类整理

Relenium中两个最重要的函数为remoteDriver()和webElement(),分别指向Selenium server(可以看做一个浏览器)和页面元素(即各种HTML元素等)。这两个函数创建的对象有很多方法可以用来爬取数据和操作浏览器。具体如下:

附注:完整函数与方法见 help(package="Rselenium")

(一)remoteDriver()函数

含义:

指向Selenium server(可以看做一个浏览器)

初始化:

创建remoteDriver对象:

remDr <- remoteDriver(browserName = "firefox")

常用方法:

1. 打开、浏览与关闭:

open()

与Selenium server建立连接并打开浏览器

navigate(url)

打开url

close()

关闭当前session

quit()

删除session并关闭浏览器

2. 获取状态信息:

getStatus()

获取Selenium server的状态

getCurrentUrl()

获取当前页面的url

getTitle()

获取当前页面的标题

getWindowHandles()

获取所有页面在Selenium中的window handle

getPageSource()

获取当前页面的源代码

3. 发送鼠标与键盘操作:

mouseMoveToLocation()

将鼠标移动至某一位置,参数x, y代表移动到相对现在鼠标位置的(x,y)距离的位置,参数webElement代表移至某一页面元素的正中位置。一般使用webElement参数更方便。

click(buttontId = 0)

单击鼠标(buttonId = 0代表左键,1代表中间建,2代表右键)

doubleclick(buttonId = 0)

双击鼠标

sendKeysToActiveElement(sendKeys)

在被激活的页面元素(一般为刚刚被点击的元素)中输入一系列文本或键盘操作。输入内容,必须是list,如果是键盘操作,则前面要注明key=。例如:remDr$sendKeysToActiveElement(list("数据分析", key="enter"))。常用的key:

4. 抓取页面元素(webElement)

findElement(using=…,value=…)

抓取单个元素。例如:remDr$findElement(using = "css", value = "#kw")。using代表定位方法:"xpath", "css", "id", "name", "tag name", "class name", "link text", "partial link text"; value代表要搜索的值。

findElements(using=…,value=…)

抓取多个元素。

5. 页面窗口操作

refresh()

刷新页面

screenshot()

截屏,如果display=FALSE, file非NULL,则将截屏保存至file指定路径。

goBack()

后退到上一页

goForward()

前进,与后退对应

maxWindowSize()

最大化当前窗口

closeWindow()

关闭当前窗口(但session还是活跃状态)

switchToWindow()

切换窗口,参数可以输入window handle

6. 插入JavaScript脚本来操作页面

executeScript()

插入同步js,参数sript即js脚本,args如果不需要特殊设定时 = 1:2即可)。例如:页面拉到最下面的js执行方式:remDr$executeScript("window.scrollTo(0,document.body.scrollHeight)", args = 1:2)

executeAsyncScipt()

插入异步js


(二)webElement()函数

含义:

指向页面元素(即各种HTML元素等)

初始化:

创建webElement对象:

1. 直接创建

webElem <- webELement(elementId = "…")

2. 抓取创建(更常用)

webElem <- remDr$findElement(using =…, value = …)

或者使用findElements查找并创建多个元素。


常用方法:

1. 获取元素信息

describeElement()

获取元素描述信息

getElemntText()

获取内部文本--爬取数据的主要方法。

getElementAttribute(attrName)

获取元素属性--可用于爬取元素连接等。

isElementDisplayed()

元素是否被展示

isElementSelected()

元素是否被选中

compareElement(otherElem)

与另一元素对比,测试是否为同一元素。

2. 发送鼠标与键盘操作:

clearElement()

针对文本输入框,清楚内容

clickElement()

单击元素

highlightElement()

高亮闪烁元素,主要用于确认定位的元素是否正确

sendKeysToElement()

用法与remoteDriver函数中的sendKeysToActiveElement(sendKeys)方法相同

submitElement()

针对

表单,提交表单

setElementAttribute()

*效用函数,设定元素属性。

3. 抓取子页面元素:

findChildElement()

如果当前页面元素下还有子元素,则可以用此方法抓取单个子元素,用法与remDr$findElement()相同

findChildElements()

抓取多个子元素。







你可能感兴趣的:(R语言,自动化)