RSelenium学习笔记(一)

本文是RSelenium学习笔记的第一部分,主要介绍了RSelenium的目的,如何连接Selenium Server,以及remoteDriver()和webElement()两个核心函数及其常用方法,帮助R用户更便捷地进行网页自动化操作。

一、介绍

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


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

针对<form>表单,提交表单

setElementAttribute()

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

3. 抓取子页面元素:

findChildElement()

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

findChildElements()

抓取多个子元素。







当然,我可以帮你输出Selenium学习笔记。以下是份简单的学习笔记供参考: Selenium学习笔记 Selenium款用于自动化Web应用程序测试的强大工具。它提供了组丰富的API,可以与各种编程语言(如Python、Java、C#等)结合使用,以实现Web应用程序的自动化测试。 1. 安装和配置 首先,你需要安装Selenium库。如果你使用Python,可以使用以下命令安装: ``` pip install selenium ``` 安装完成后,你还需要下载并配置相应的浏览器驱动程序。Selenium支持各种浏览器,如Chrome、Firefox、Safari等。你可以在Selenium官方网站上找到相应的驱动程序下载链接。 2. 基本操作 Selenium提供了系列方法来模拟用户在浏览器中的操作,如打开URL、点击元素、输入文本等。以下是些常用的基本操作示例: - 打开浏览器并访问URL: ```python from selenium import webdriver driver = webdriver.Chrome() # 使用Chrome浏览器驱动 driver.get("https://www.example.com") # 打开指定URL ``` - 查找元素并操作: ```python element = driver.find_element_by_id("element_id") # 根据元素ID查找 element.click() # 点击元素 input_element = driver.find_element_by_name("input_name") # 根据元素名称查找 input_element.send_keys("Hello, World!") # 输入文本 ``` - 执行JavaScript代码: ```python driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # 滚动到页面底部 ``` 3. 高级操作 Selenium还提供了些高级操作,如处理弹窗、切换窗口、等待元素加载等。以下是些常用的高级操作示例: - 处理弹窗: ```python alert = driver.switch_to.alert # 切换到弹窗 alert.accept() # 接受弹窗 confirm = driver.switch_to.alert # 切换到确认框 confirm.dismiss() # 取消确认框 ``` - 切换窗口: ```python window_handles = driver.window_handles # 获取所有窗口句柄 driver.switch_to.window(window_handles[-1]) # 切换到最后个窗口 ``` - 等待元素加载: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "element_id")) ) ``` 4. 测试框架 Selenium还可以与测试框架(如Pytest、JUnit等)结合使用,以便更好地组织和管理测试用例。你可以使用测试框架提供的断言方法来验证测试结果。 ```python import pytest def test_example(): driver = webdriver.Chrome() driver.get("https://www.example.com") assert "Example Domain" in driver.title # 断言页面标题包含指定文本 driver.quit() ``` 以上是份简单的Selenium学习笔记,希望对你有所帮助。当然,Selenium还有很多其他功能和用法,你可以进步深入学习和探索。祝你学习愉快!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值