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 属性

字段名称字段类型字段描述
htmlString页面HTML
jsonJSONObject/JSONArray内容转json结果
cookiesMap<String,String>cookies
urlString当前页面的URL
titleString当前页面的标题

SeleniumResponse 方法

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

参数名描述可否为空
scriptjs脚本
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')}

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_xoffset x
offset_yoffset 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')}