首页 > 其他分享 >SeleniumBase 制作WEB用户使用导览,并导出 JS-使用笔记(三)

SeleniumBase 制作WEB用户使用导览,并导出 JS-使用笔记(三)

时间:2024-04-12 23:55:07浏览次数:31  
标签:WEB None self introjs JS tour intro 导览

自动化福音(爬虫、办公、测试等) SeleniumBase 使用笔记(三)

SeleniumBase 制作WEB用户使用导览,并导出 JS

SeleniumBase 包含强大的 JS 代码生成器,用于将 Python 转换为 JavaScript,而制作用户导览,就是其中的应用之一,用户导览能将 SaaS 产品采用率提高 10 倍或更多

目录

  1. 创建导览 的API
  2. 添加导览步骤 API
  3. 播放导览 API
  4. 导出 JS API
  5. 启用命令
  6. 例子
  7. 各种主题的执行效果

创建导览

创建导览需要使用特定的方法(API)来编写 Py 脚本,支持 5 个 JavaScript 库

# 最短版本
# name      如果同时创建多个导览,请使用它来标记。
self.create_tour(name=None, theme=None)  # 默认使用 IntroJS

# 利用 Shepherd JS 创建
# theme     可选"light"/"arrows", "dark", "default", "square", and "square-dark"
self.create_shepherd_tour(name=None, theme=None)  # 等同于:self.create_tour(theme="shepherd")

# 利用 Bootstrap Tour 库创建
self.create_bootstrap_tour(name=None)  # 等同于:self.create_tour(theme="bootstrap")

# 利用 IntroJS 库创建
self.create_introjs_tour(name=None)  # 等同于:self.create_tour(theme="introjs")

# 利用 DriverJS  库创建
self.create_driverjs_tour(name=None)  # 等同于:self.create_tour(theme="driverjs")

# 利用 Hopscotch Library 创建
self.create_hopscotch_tour(name=None)  # 等同于:self.create_tour(theme="hopscotch")

添加导览步骤

要添加游览步骤,请使用以下方法:

# 参数说明:
# message   要显示的消息
# selector  要附加到的元素的 CSS 选择器
# name      如果同时创建多个导览,请使用它来标记。
# title     显示在邮件上方的其他标题文本。
# theme     设置网站导览的默认主题。
# alignment 从top", "bottom", "left", "right"中进行选择。(“top”是默认值,但是 Hopscotch 和 DriverJS 默认 bottom )
# duration  自动执行下一步时的延迟(仅限 Bootstrap 主题生效)
self.add_tour_step(message, selector=None, name=None, title=None, theme=None, alignment=None, duration=None,)

播放导览

使用以下方法播放导览:

# 参数:
# name      如果同时创建多个导览,请使用它来标记。
# interval  表示将在经过 n 秒后,自动重播
self.play_tour(name=None, interval=0)

导出导览

如果要将创建的游览保存为 JavaScript 文件,请使用下方方法,导出后的JS,复制到“开发者工具》控制台”中,提前打开对应的网站,即可执行:

# name=指定标记导出,filename=js文件
self.export_tour(name=None, filename="my_tour.js")

启用命令

使用下面的命令,直接运行脚本

# 正常启动
pytest my_tour.py

# 禁用网站内容的安全策略(不一定对此网站有效),
pytest my_tour.py --disable-csp

例子

例子启动命令:pytest my_tour.py --firefox --disable-csp 使用火狐浏览器,并禁用CSP,CSP是一种安全策略,它允许网站不去加载外部JS。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@ Project     : selenium-base-student 
@ File        : my_tour.py
@ Author      : yqbao
@ Version     : V1.0.0
@ Description : my_tour
"""
from seleniumbase import BaseCase

BaseCase.main(__name__, __file__)


class MyTourClass(BaseCase):
    def test_taobao_tour_intro_js(self):
        self.open('https://www.taobao.com/')  # 打开页面
        self.wait_for_element('div.main .main-inner')  # 等待页面元素可见

        self.create_tour()  # 等同:self.create_tour(theme='IntroJS')
        self.add_tour_step("欢迎来到淘宝网!", title="开始用户导览")  # 添加步骤,指明开始
        self.add_tour_step('商品搜索框', "input#q", alignment='bottom')  # 下方
        self.add_tour_step('搜索', "button.btn-search", alignment='bottom')
        self.add_tour_step("您如果有账号,则登录点这个里。", 'div.member-ft a:nth-of-type(1)', alignment='bottom')
        self.add_tour_step("您如果没有账号,则点这个里可以注册属于您自己的账号。", 'div.member-ft a:nth-of-type(2)',
                           alignment='bottom')
        self.add_tour_step("分类栏,可以帮助你按照类别查找。", 'div.J_Service ', alignment='right')  # 右侧
        self.add_tour_step("你已经学会使用淘宝啦。", title="用户导览结束")  # 添加步骤,指明结束
        self.export_tour(filename="taobao_introjs_tour.js")  # 导出导览js
        self.play_tour()  # 播放导览


执行效果

例子执行效果
image

image

导出的JS

////////  Load Tour Start Page (if not there now)  ////////

if (window.location.href != "https://www.taobao.com/") {
    window.location.href="https://www.taobao.com/";
}

////////  Resources  ////////

function injectCSS(css_link) {var head = document.getElementsByTagName("head")[0];var link = document.createElement("link");link.rel = "stylesheet";link.type = "text/css";link.href = css_link;link.crossorigin = "anonymous";head.appendChild(link);};
function injectJS(js_link) {var head = document.getElementsByTagName("head")[0];var script = document.createElement("script");script.src = js_link;script.defer;script.type="text/javascript";script.crossorigin = "anonymous";script.onload = function() { null };head.appendChild(script);};
function injectStyle(css) {var head = document.getElementsByTagName("head")[0];var style = document.createElement("style");style.type = "text/css";style.appendChild(document.createTextNode(css));head.appendChild(style);};
injectCSS("https://cdn.jsdelivr.net/npm/intro.js@5.1.0/minified/introjs.min.css");
injectStyle("        .introjs-button.introjs-nextbutton,        .introjs-button.introjs-donebutton {            color: #fff !important;            background-color: #367be5 !important;            border: 1px solid #245ac0 !important;            text-shadow: none;            box-shadow: none;        }        .introjs-button.introjs-nextbutton:hover,        .introjs-button.introjs-donebutton:hover {            color: #fff !important;            background-color: #245ac0 !important;            border: 1px solid #245ac0 !important;        }        .introjs-button {            box-sizing: content-box;            text-decoration: none;        }        .introjs-button.introjs-skipbutton {            color: #367be5;        }        .introjs-tooltip, .introjs-floating {            box-sizing: content-box;            position: absolute;        }");
injectJS("https://cdn.jsdelivr.net/npm/intro.js@5.1.0/intro.min.js");

////////  Tour Code  ////////

function loadTour() { if ( typeof introJs !== "undefined" ) {

    // IntroJS Tour
    function startIntro(){
    var intro = introJs();
    intro.setOptions({
    steps: [
    {
    intro: '<font size="3" color="#33477B"><center><b>开始用户导览</b></center><hr>欢迎来到淘宝网!</font>',
    position: 'top'},{element: 'input#q',
    intro: '<font size="3" color="#33477B">商品搜索框</font>',
    position: 'bottom'},{element: 'button.btn-search',
    intro: '<font size="3" color="#33477B">搜索</font>',
    position: 'bottom'},{element: 'div.member-ft a:nth-of-type(1)',
    intro: '<font size="3" color="#33477B">您如果有账号,则登录点这个里。</font>',
    position: 'bottom'},{element: 'div.member-ft a:nth-of-type(2)',
    intro: '<font size="3" color="#33477B">您如果没有账号,则点这个里可以注册属于您自己的账号。</font>',
    position: 'bottom'},{element: 'div.J_Service ',
    intro: '<font size="3" color="#33477B">分类栏,可以帮助你按照类别查找。</font>',
    position: 'right'},{
    intro: '<font size="3" color="#33477B"><center><b>用户导览结束</b></center><hr>你已经学会使用淘宝啦。</font>',
    position: 'top'},]
    });
    intro.setOption("disableInteraction", true);
    intro.setOption("overlayOpacity", .29);
    intro.setOption("scrollToElement", true);
    intro.setOption("keyboardNavigation", true);
    intro.setOption("exitOnEsc", true);
    intro.setOption("hidePrev", true);
    intro.setOption("nextToDone", true);
    intro.setOption("exitOnOverlayClick", false);
    intro.setOption("showStepNumbers", false);
    intro.setOption("showProgress", false);
    intro.start();
    $tour = intro;
    };
    startIntro();

} else { window.setTimeout("loadTour();",100); } }
loadTour()

在火狐浏览器“开发者工具》控制台”中复制导出的JS执行
image

GitHub SeleniumBase
本文章的原文地址
GitHub主页

标签:WEB,None,self,introjs,JS,tour,intro,导览
From: https://www.cnblogs.com/yqbaowo/p/18124781

相关文章

  • 30 天精通 RxJS (16):Observable Operators - catch, retry, retryWhen, repeat
    我们已经快把所有基本的转换(Transformation)、过滤(Filter)和合并(Combination)的operators讲完了。今天要讲错误处理(ErrorHandling)的operators,错误处理是异步行为中的一大难题,尤其有多个交错的异步行为时,更容易凸显错误处理的困难。就让我们一起来看看在RxJS中能如何处理......
  • JS 原型链查找 (上)
    我们都知道面向对象语言如Java,C++等都基本实现了封装,继承,多态等特性,用面向对象语言来编程的基本套路就是抽象出类,然后实例化,用实例调用方法来模拟进行程序间的通信.但JS不是面向对象的语言,或者我们称它的脚本语言,它的一等公民就是对象/函数.本篇这里主......
  • Python+FastJson漏洞批量检测实战
    #-*-coding:utf-8-*-importosimportsubprocess#指定要读取文件的目录directory='D:/gongju02/anq/FastJson/JsonExp-1.4.0'defjson_exp(text_path):"""指定要检测的接口文件目录"""try:#改变当前工作目录os.chdir(di......
  • 关于Nodejs入坑!!!
    关于Nodejs入门什么是nodejs?一个开源与跨平台的JavaScript运行时环境;可以理解为Node.js就是一个服务器端的、非阻塞式I/O的、事件驱动的JavaScript运行环境Node作为一个新兴的前端框架,后台语言,有很多吸引人的地方:RESTfulAPI,单线程。https://www.ruanyifeng.com特点:1......
  • FastJson反序列化漏洞利用和扫描探测工具-实战
    一、简介fastjson漏洞批量检测工具,根据现有payload,检测目标是否存在fastjson或jackson漏洞(工具仅用于检测漏洞),若存在漏洞,可根据对应payload进行后渗透利用,若出现新的漏洞时,可将最新的payload新增至txt中(需修改格式),工具完全替代手工检测,作为辅助工具使用。二、LDAP检测环境搭建......
  • 使用内置函数 (SQL Server) 验证、查询和更改 JSON 数据
    使用内置函数(SQLServer)验证、查询和更改JSON数据项目2023/09/0313个参与者反馈 本文内容此页上的示例JSON文本使用ISJSON函数验证JSON文本使用JSON_VALUE函数从JSON文本中提取值使用JSON_QUERY函数从JSON文本中提取对象或数组显示另外......
  • js处理大数(超过16位的数字):big-init、bignumber.js
    bigints支持JSON.parse/stringify解析方式。基于DouglasCrockford的JSON.js包和bignumber.js库。本地Bigint最近被添加到JS中,所以我们增加了一个选项来代替bignumber.js。但是,使用本机BigInt进行解析是为了向后兼容虽然大多数JSON解析器假设数值具有与IEEE754double相同的精......
  • CMC-IIS-WebService發布遇到的問題點
     启动网站调试提示HTTP错误403.14–ForbiddenWeb服务器被配置为不列出此目录的内容。解决方案第一种.在网站的配置文件里添加,第二種IIS設置(不使用)。<system.webServer><directoryBrowseenabled="true"/></system.webServer>  IIS中的一個異常:......
  • Konva.js
    1.前言简介:Konva.js-适用于桌面/移动端应用的HTML52dcanvas库个人体验:原生的canvas只支持绘制基本的直线,矩形,文字,图片,扇形等,如果要支持更复杂的功能,无法支持复杂的图形,移动,动画等,所以得引用相关库来实现,提示开发效率本篇文章只是初步使用,更详细的功能请查阅官方文档2......
  • 他是JSOI第一名,也是在线知名题库的vjudge“网红”
    (省流:查找替换,原文)2077年菜就多练省省队选拔赛(JSOI)上,以优秀成绩斩下第一名年仅初三的@hangry_sol,成为最夺目的选手之一。而且虽然是初三的选手,但他取得优异成绩后,不少网友并不感到陌生,纷纷留言:这不是vjudge上天天爆切神仙题的小哥吗?没错,和其他JSOI选手不同,hangry_sol......