selenium

引入selenium插件

  • 首先到码云下载插件点击下载selenium - 图1到本地并导入到工作空间或安装到maven库
  • 在spider-flow/spider-flow-web/pom.xml中引入插件
  1. <!-- 引入selenium插件 -->
  2. <dependency>
  3. <groupId>org.spiderflow</groupId>
  4. <artifactId>spider-flow-selenium</artifactId>
  5. </dependency>

节点说明

  • 页面加载超时时间,单位为毫秒
  • 元素获取超时时间,单位为毫秒
  • URL:起始地址
  • 节点执行完毕后,会产生resp 类型为SeleniumResponse的变量

SeleniumResponse 属性

字段名称 字段类型 字段描述
html String 页面HTML
json JSONObject/JSONArray 内容转json结果
cookies Map<String,String> cookies
url String 当前页面的URL
title String 当前页面的标题

SeleniumResponse 方法

switchTo

参数名 描述 可否为空
index/iframeName/WebElement 要切换的iframe
  1. ${resp.switchTo(index)}

TIP

返回值类型:SeleniumResponse

switchToDefault

切换至默认,即从iframe里切换回来

  1. ${resp.switchToDefault()}

selector

参数名 描述 可否为空
cssSelector 要获取的cssSelector

TIP

返回值类型:WebElement

  • 获取页面上的第一个div
  1. ${resp.selector('div')}

selectors

参数名 描述 可否为空
cssSelector 要获取的cssSelector

TIP

返回值类型:WebElements

  • 获取页面上的所有div
  1. ${resp.selectors('div')}

xpath

参数名 描述 可否为空
xpath 要获取的xpath

TIP

返回值类型:WebElement

  • 获取页面上的第一个div
  1. ${resp.xpath('//div')}

xpaths

参数名 描述 可否为空
xpath 要获取的xpath

TIP

返回值类型:WebElements

  • 获取页面上的所有div
  1. ${resp.xpaths('//div')}

executeScript

参数名 描述 可否为空
script js脚本
List<Object> 参数

TIP

返回值类型:Object

  • 执行js
  1. ${resp.executeScript('return "hello spider-flow-" + arguments[0];',['selenium'])}

quit

  • 退出浏览器
  1. ${resp.quit()}

toUrl

参数名 描述 可否为空
url 要跳转的url
  • 跳转到百度
  1. ${resp.toUrl('https://www.baidu.com')}

loadCookies

  • 将cookie加载至cookieContext中,以便后续自动管理cookie
  1. ${resp.loadCookies()}

WebElement 方法

html

TIP

返回值类型:String

  • 获取节点的html
  1. ${elementVar.html()}

text

TIP

返回值类型:String

  • 获取节点的text
  1. ${elementVar.text()}

attr

TIP

返回值类型:String

  • 获取节点的href属性
  1. ${elementVar.attr('href')}

selector

参数名 描述 可否为空
cssSelector 要获取的cssSelector

TIP

返回值类型:WebElement

  • 获取该节点下的第一个div
  1. ${elementVar.selector('div')}

selectors

参数名 描述 可否为空
cssSelector 要获取的cssSelector

TIP

返回值类型:WebElements

  • 获取获取该节点下的所有div
  1. ${elementVar.selectors('div')}

xpath

参数名 描述 可否为空
xpath 要获取的xpath

TIP

返回值类型:WebElement

  • 获取获取该节点下的第一个div
  1. ${elementVar.xpath('//div')}

xpaths

参数名 描述 可否为空
xpath 要获取的xpath

TIP

返回值类型:WebElements

  • 获取获取该节点下的所有div
  1. ${elementVar.xpaths('//div')}

screenshot

TIP

返回值类型:byte[]

  • 对该节点进行截图
  1. ${elementVar.screenshot()}

click

TIP

返回值类型:WebElement

  • 对该节点进行点击
  1. ${elementVar.click()}

sendKeys

TIP

返回值类型:WebElement

  • 对该节点进行模拟按键
  1. ${elementVar.sendKeys('hello spider-flow')}

clickAndHold

release

move

参数名 描述 可否为空
offset_x offset x
offset_y offset y

TIP

在该节点上模拟鼠标移动,当offset_x和offset_y为空时,则模拟鼠标移动到该节点上

doubleClick

pause

perform

TIP

以上6个方法是配套使用,调用perform时才是真正执行动作

  • 模拟鼠标移动到该节点上,等待500ms在点击,等待500ms在移动,最后释放(模拟拖拽滑块条)
  1. ${elementVar.move().pause(500).clickAndHold().pause(500).move(200,0).release().perform()}

WebElements 方法

html

TIP

返回值类型:List<String>

  • 获取节点的html
  1. ${elementsVar.html()}

text

TIP

返回值类型:List<String>

  • 获取节点的text
  1. ${elementsVar.text()}

attr

TIP

返回值类型:List<String>

  • 获取节点的href属性
  1. ${elementsVar.attr('href')}

selector

参数名 描述 可否为空
cssSelector 要获取的cssSelector

TIP

返回值类型:WebElement

  • 获取该节点下的第一个div
  1. ${elementsVar.selector('div')}

selectors

参数名 描述 可否为空
cssSelector 要获取的cssSelector

TIP

返回值类型:WebElements

  • 获取获取该节点下的所有div
  1. ${elementsVar.selectors('div')}

xpath

参数名 描述 可否为空
xpath 要获取的xpath

TIP

返回值类型:WebElement

  • 获取获取该节点下的第一个div
  1. ${elementsVar.xpath('//div')}

xpaths

参数名 描述 可否为空
xpath 要获取的xpath

TIP

返回值类型:WebElements

  • 获取获取该节点下的所有div
  1. ${elementsVar.xpaths('//div')}