整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML 脚本

avaScript 使 HTML 页面具有更强的动态和交互性。

在线实例

插入一段脚本

如何将脚本插入 HTML 文档。

使用 <noscript> 标签

如何应对不支持脚本或禁用脚本的浏览器。

HTML <script> 标签

<script> 标签用于定义客户端脚本,比如 JavaScript。

<script> 元素既可包含脚本语句,也可通过 src 属性指向外部脚本文件。

JavaScript 最常用于图片操作、表单验证以及内容动态更新。

下面的脚本会向浏览器输出"Hello World!":

实例

<script>document.write("Hello World!");</script>

Tip: 学习更多关于Javascript教程,请查看JavaScript 教程!

HTML<noscript> 标签

<noscript> 标签提供无法使用脚本时的替代内容,比方在浏览器禁用脚本时,或浏览器不支持客户端脚本时。

<noscript>元素可包含普通 HTML 页面的 body 元素中能够找到的所有元素。

只有在浏览器不支持脚本或者禁用脚本时,才会显示 <noscript> 元素中的内容:

实例

<script>document.write("Hello World!")</script><noscript>抱歉,你的浏览器不支持 JavaScript!</noscript>

JavaScript体验(来自本站javascript教程)

JavaScript实例代码:

JavaScript可以直接在HTML输出:

document.write("<p>这是一个段落。</p>");

JavaScript事件响应:

<buttontype="button"onclick="myFunction()">点我!</button>

JavaScript处理 HTML 样式:

document.getElementById("demo").style.color="#ff0000";

HTML 脚本标签

标签描述
<script>定义了客户端脚本
<noscript>定义了不支持脚本浏览器输出的文本

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!

近在逛github时发现一个不错的安卓开源项目,支持用javascript编写自动化脚本,可以模拟人工点击、滑动等一系列操作。


auto.js

Auto.js 简介

一个支持无障碍服务的Android平台上的JavaScript IDE,其发展目标是JsBox(是一个可以用来运行 JavaScript 脚本的 iOS 应用,可以执行标准的 JavaScript 脚本)和Workflow。同时有VS Code 插件可提供基础的在桌面开发的功能。

Auto.js具有如下特点:

  1. 支持免root和root运行,支持悬浮窗录制和运行
  2. 提供对屏幕上的控件的寻找、遍历、获取信息、操作等API。类似于Google的UI测试框架UiAutomator,可以把它当做移动版UI测试框架使用
  3. 支持使用Root权限以提供更强大的屏幕点击、滑动、录制功能和运行shell命令。录制录制可产生js文件或二进制文件,录制动作的回放比较流畅
  4. 提供截取屏幕、保存截图、图片找色、找图等函数

与按键精灵等软件的区别

Auto.js与按键精灵大多数功能类似,但是其社区和市场没有按键精灵强大,毕竟开源软件在商业化这块不是强项。

与按键精灵等软件的区别:

  1. Auto.js主要以自动化、工作流为目标;
  2. Auto.js兼容性更好。以坐标为基础的按键精灵、脚本精灵很容易出现分辨率问题,而以控件为基础的Auto.js则没有这个问题;
  3. Auto.js执行大部分任务不需要root权限。只有需要精确坐标点击、滑动的相关函数才需要root权限;
  4. Auto.js可以提供界面编写等功能,不仅仅是作为一个脚本软件而存在。

应用场景

如游戏加点,自动阅读等,你可以想得到的都可以通过JS脚本自己来编写业务逻辑,是不是很方便。另外如最近很多的双11活动可以领券领币等,文末附Auto.js以及相关脚本github地址

Auto.js App代码地址

github.com/hyb1996/Auto.js

双11活动领币脚本

github.com/hyue418/taobao-11-11


我们在进行web自动化时,经常遇到一些不好操作的元素,普通的元素定位和操作容易报错,如果我们使用的selenium的话,就可以使用selenium调用js脚本进行操作。在playwright 中也有类似的方法,使用page.evaluate()执行JavaScript脚本。 page.evaluate()和page.evaluate_handle()之间的唯一区别是page.evaluate_handle()返回JSHandle。

  • page.evaluate() 返回调用执行的结果
  • page.evaluate_handle()返回JSHandle

page.evaluate()

返回evaluate() 返回执行JavaScript脚本的结果,使用示例如下:

pythonfrom playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto('https://www.baidu.com')

        print(page.evaluate("1 + 2"))

        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()

也可以执行一个函数,如下:

pythonfrom playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto('https://www.baidu.com')

        print(page.evaluate("() => '拜仁慕尼黑'"))

        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()

注:如果传递给page.evaluate()的函数返回一个不可序列化的值,则page.evaluate()解析为undefined

示例

  1. 打印网页标题

执行document.title 获取页面的title,代码如下:

pythonfrom playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        title = page.evaluate('document.title')
        print(title)
        page.pause()
        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()
  1. 操作元素示例
pythonfrom playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        js = """
            document.getElementById('kw').value='playwright';
            document.getElementById('su').click();
            """
        page.evaluate(js)
        page.pause()
        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()

页面如下:

page.evaluate_handle()

page.evaluate_handle()的返回值是JSHandle。

pythonfrom playwright.sync_api import sync_playwright

def run_js_script():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        a_handle = page.evaluate_handle("document.body")
        result_handle = page.evaluate_handle("body => body.innerHTML", a_handle)
        print(result_handle.json_value())
        result_handle.dispose()
        page.pause()
        # 关闭浏览器
        context.close()
        browser.close()

run_js_script()

总结

本文主要介绍了playwright执行js脚本的操作,与selenium一样,playwright同样可以执行js脚本来完成一些不便操作的元素。