1.创建/关闭BrowserBot
(1)主函数示例
const {browserBot, By, Key, until} = require('BrowserBot');//注意browserBot大小写
async function mian(){
//初始化BrowserBot
let browserName = 'chrome';
let version = null;//指定浏览器版本号
let startArgs = [], switchArgs = [];
let driver = await browserBot.InitBrowserBot(browserName, version, startArgs, switchArgs);
await driver.get('https://www.baidu.com/');
await driver.sleep(5000);
await driver.quit();//关闭BrowserBot
}
mian();
//主函数,初始化BrowserBot服务
//browserName 字符串,浏览器名称 "edge" "chrome"
//version 字符串,可选参数,浏览器版本号,第一次使用或更换版本,必须指定版本号
//startArgs 字符串数组,可选参数。启动参数
//无头模式:["headless"] 设置UA:["user-agent='UA'"] 设置代理:["proxy-server=127.0.0.1:888"]
//switchArgs 字符串数组,可选参数其他参数选项
(2)关闭浏览器
await driver.quit();
//退出
2.等待超时
await driver.sleep(3000);
//显示等待
//参数一 整型,等待时间,单位毫秒
await driver.manage().setTimeouts({implicit: 5000});
//隐式等待,设置5秒
3.元素操作
(1)查找元素
await driver.findElement(locator: Locator);
//查找单个元素
//locator,查找元素的方式有
//By.className、By.css、By.id、By.linkText、By.name、By.xpath、
By.partialLinkText、By.js
//成功返回元素对象,失败程序终止。封装try...catch...处理返回失败
//示例:let element = await driver.findElement(By.id("kw")); //通过By.id 查找元素
//By.js 基于JavaScript的定位方式,参数可以是字符串 也可以是js函数,如
//果是函数 , 则返回 return 的值。无论是字符表达式还是js函数,结果必须是元
//素或元素列表
await driver.findElements(locator: Locator);
//查找元素数组
(2)元素方法
await element.click();
//点击元素
await element.sendKeys("ai-bot");
//参数一 字符串型,设置元素的值,也可以发送键值
//示例:await elesendKeys("ai-bot", Key.ENTER);//输入ai-bot 并且回车
await element.clear();
//清除元素值
await element.submit();
//提交表单
await element.getText();
//获取innerText值
await element.getAttribute("attributeName");
//获取元素指定属性值
//参数一 字符串型,指定属性名
//成功返回对应属性的值
await element.getRect();
//获取元素矩形位置
//成功返回元素矩形位置 {height: number, width: number, x: number, y: number}
await element.isDisplayed();
//判断该元素是否可见
await element.isEnabled();
//判断该元素是启用
await element.isSelected();
//判断该元素是选中
await element.findElement(locator);
//查找此元素后代元素
await element.findElements(locator);
//查找此元素后代元素数组
(3)IFrame
await driver.switchTo().frame(iframe);
//切换到指定iframe
await driver.switchTo().frame(1);
//通过索引号切换iframe
await driver.switchTo().parentFrame();
//切换到当前iframe的 父iframe
await driver.switchTo().defaultContent();
//切换到最顶层默认框架
4.鼠标键盘指令
await driver.actions().sendKeys("ai-bot").perform();
//发送文本,也可以是键值
await driver.actions().click(element).perform();
//左键点击元素,点击之前鼠标先移到目标中心位置
await driver.actions().contextClick(element).perform();
//右键点击元素,点击之前鼠标先移到目标中心位置
await driver.actions().doubleClick(element).perform();
//左键双击元素,点击之前鼠标先移到目标中心位置
await driver.actions().dragAndDrop(element, destLocation).perform();
//按下左键从参数一(元素)中间位置,移动到参数二(元素或坐标) 并释放左键
await driver.actions().keyDown(Key.ENTER).perform();
//按下指定键值
await driver.actions().keyUp(Key.ENTER).perform();
//释放指定键值
await driver.actions().move(options).perform();
//移动鼠标, options 参数可以是坐标{x: 100, y:100}或者元素
await driver.actions().pause(3000).perform();
//暂停执行动作,等待3秒
await driver.actions().press(0).perform();
//在鼠标当前位置按下按钮, 左键0 中键1 右键2
await driver.actions().release(0).perform();
//在鼠标当前位置释放按钮, 左键0 中键1 右键2
await driver.actions().clear().perform();
//释放所有键、指针并清除内部状态。
//必须调用perform() 执行动作序列,以上指令可以组合使用
5.浏览器操作
(1)页面和导航
await driver.get('http://www.ai-bot.net/');
//打开指定URL,http://或者 https://开头
await driver.navigate().back();
//后退
await driver.navigate().forward();
//前进
await driver.navigate().refresh();
//刷新
await driver.navigate().to(url);
//跳转指定url ,http://或者 https://开头
await driver.getCurrentUrl();
//获取当前URL
await driver.getTitle();
//获取当前页面标题
await driver.getPageSource();
//获取当前页面源码
(2)选项卡(含窗口)
await driver.getWindowHandle();
//获取当前窗口句柄,此处窗口句柄与我们WindowsBot窗口句柄不是同一个概念
await driver.getAllWindowHandles();
//获取所有窗口句柄
//返回窗口句柄数组,此处窗口句柄与我们WindowsBot窗口句柄不是同一个概念
await driver.switchTo().window(handle);
//切换到指令选项卡或窗口
await driver.switchTo().newWindow('tab');
//创建新选项卡并切换
await driver.switchTo().newWindow('window');
//创建新窗口卡并切换
await driver.close();
//关闭当前窗口/选项卡
(3)窗口操作
await driver.manage().window().getRect();
//获取窗口大小
//成功返回{height: number, width: number, x: number, y: number}
await driver.manage().window().setRect({x: 0, y: 0, width:100, height:100});
//设置窗口和位置大小,可以单独指定x y或者 width, height
await driver.manage().window().maximize();
//最大化窗口
await driver.manage().window().minimize();
//最小化窗口
6.截图
await element.takeScreenshot(scroll = false);
//元素截图
//参数一 布尔类型,可以选参数,截图之前是否将元素滚动到视图中。默认为false。
//成功返回字符串 base-64 编码。 PNG 格式
await driver.takeScreenshot();
//全屏截图
//成功返回字符串 base-64 编码。 PNG 格式
7.警告框操作
let alert = await driver.switchTo().alert();
//切换弹窗警告框
//成功返回警告框操作对象,失败程序报错try...catch...处理返回失败
await alert.accept();
//点击确定按钮
await alert.dismiss();
//点击取消按钮
await alert.sendKeys("ai-bot是一款优秀的RPA框架");
//设置弹窗(prompt)输入框内容
await alert.getText();
//获取弹窗文本
8.注入JavaScript
await driver.executeScript(script);
//参数一 可以是字符串 也可以是js 函数
//如果是函数 , 则返回 return 的值。返回值解析规则:
//HTML 元素,该值将解析为WebElement
//Null 和 undefined 返回值将解析为 null
//布尔值、数字和字符串将按原样解析
//函数将解析为它们的字符串表示
//对于数组和对象,每个成员项都会按照上面的规则进行转换
//示例:await driver.executeScript(function(){return 'Ai-Bot'}); //function
await driver.executeScript("alert('Ai-Bot是一款非常优秀的RPA')");//string
await driver.executeAsyncScript(script);
//异步注入
9.cookie操作
await driver.manage().getCookie("name")
//获取指定name的cookie
await driver.manage().getCookies()
//获取所有cookie
await driver.manage().addCookie(spec);
//添加cookie,代码示例:
//await driver.manage().addCookie({name: 'foo', value: 'bar'});
//除name、value 还有domain、expiry、httpOnly、path、secure属性
await driver.manage().deleteCookie("name");
//删除指定name的cookie
await driver.manage().deleteAllCookies()
//删除所有cookie