zoukankan      html  css  js  c++  java
  • Ai-Bot 之BrowserBot方法介绍

    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, 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, number, x: number, y: number}
    await driver.manage().window().setRect({x: 0, y: 0, 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
  • 相关阅读:
    有爱,有期待——开启囤货模式(一)
    我们都爱你,悠悠球少年
    三月随笔——漫长的等待
    奢侈的休闲度假时光——带着小样儿去三亚(三)
    这个夏天,飞到北纬18°去玩海——带着小样儿去三亚(二)
    一场说走就走的旅程——带着小样儿去三亚(一)
    获取URL的参数-详解如何获取(自己写的,实测有效)
    背景图自适应
    百家姓
    判断是手机端还是PC端的代码
  • 原文地址:https://www.cnblogs.com/mys6/p/15059177.html
Copyright © 2011-2022 走看看