整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          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腳本來完成一些不便操作的元素。


          主站蜘蛛池模板: 国产一区在线视频| 国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲日韩国产精品第一页一区 | 亚洲一区二区三区亚瑟| 亚洲AV无码一区二区乱子仑| 一区二区三区电影网| 亚无码乱人伦一区二区| 国产激情无码一区二区三区| 亚洲熟妇av一区| 波多野结衣一区二区三区88| 精品国产一区二区三区久久久狼| 国产伦精品一区二区三区视频金莲| 中文字幕一区二区三区人妻少妇 | 91精品国产一区二区三区左线| 亚洲国产成人精品久久久国产成人一区二区三区综 | 精品国产一区二区三区| 亚洲国产精品自在线一区二区| 无码毛片一区二区三区视频免费播放 | 精品aⅴ一区二区三区| 日本夜爽爽一区二区三区| 色综合久久一区二区三区| 夜夜精品视频一区二区| 美日韩一区二区三区| 无码一区二区三区中文字幕| 精品国产a∨无码一区二区三区| 一区二区三区四区精品视频| 国产亚洲无线码一区二区| 成人精品一区二区三区不卡免费看 | 亚洲爆乳精品无码一区二区| 91一区二区三区四区五区| 国产一区二区三区无码免费| 97精品一区二区视频在线观看| 国产在线一区二区| 一区二区三区无码高清| 日韩免费一区二区三区在线| 亚洲一区二区中文| 久久精品无码一区二区无码| 亚洲AV无码一区二区大桥未久| 免费精品一区二区三区在线观看| 精品深夜AV无码一区二区老年| 久久精品一区二区三区日韩 |