整合营销服务商

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

免费咨询热线:

javascript脚本何时会被执行

avascript脚本可以嵌入在html内的任意地方,但它何时被调用呢?当浏览器打开HTML文件后,会直接运行不是声明函数的脚本或通过事件调用脚本函数,下面分析这几种情况。

1.浏览器在打开页面时执行脚本

当浏览器打开一个HTML文件时,它会从头开始解释整个文件,包括html标签和脚本。如果脚本中有可以直接执行的语句,则会在遇到的时候马上解释执行。主要有以下2种情形:
1).程序启动(这里指浏览器加载页面)这个alert这类函数就会被触发执行

<html>
    <head>
        <title>demo</title>
        <script type="text/javascript">
            alert("dare you click me once again");    
        </script>
    </head>
    <body onLoad="display()">
    </body>
</html>

2).随着浏览器加载解析js函数被自动调用(并不是用户点击等行为触发)

2.利用onLoad事件执行脚本(相当于监听**发生,然后执行)

onLoad事件是一个页面在浏览器中被打开时发生的,该方法常用于在打开一个页面的同时向用户显示一些消息。
下面例子利用标签的onLoad事件进行演示:

<html>
    <head>
        <title>demo</title>
        <script type="text/javascript">
            //insert javascript code here.
            function display()
            {
                alert("dare you click me once again")    
            }
        </script>
    </head>
    <body onLoad="display()">
    </body>
</html>

3.利用用户事件执行脚本

用户在使用浏览器时经常会使用鼠标和键盘进行一些操作,比例移动鼠标、点击链接或按钮,这些操作都会产生相应的事件。我们可以利用这些事件来调用脚本函数。
下面例子利用一个点击按钮事件来调用display()函数。

<html>
    <head>
        <title>demo</title>
        <script type="text/javascript">
            //insert javascript code here.
            function display(){
                alert("you click me ,it is so pain")
                }
        </script>
    </head>
    <body>
        <center><br>
        <form>
            <input type="button" value="onclick" onclick="display()">
        </form>
    </center>
    </body>
</html>

本文作者:皮卡丘和羊宝贝

本文链接:https://www.cnblogs.com/lovelywcc/p/14368913.html

本文是《JavaScript调试技巧合集》系列分享中的一篇,笔者希望在每篇文章中介绍一个关于JS调试的小知识点,希望你在读完这个系列后,在调试技巧上能够更加运用自如。下面是知识点概览:




本次分享主题:为什么不推荐使用alert调试代码?

对于使用alert调试代码这件事情,我相信很多人都持不同的看法,就我个人而言,我是十分反对的,在列举原因之前,我们一起先来看看MDN上是怎样介绍alert的:




  • 从上图的“注意点一”我们可以看出,alert在帮助我们调试问题时,有它的局限性——只能显示字符串,如果传入的参数是一个其他对象,eg:


我们传入了一个对象 {a:1} , 结果只能给到一个 [object Object] , 无法看到变量内部的结构。不建议使用!

  • 从“注意点二”可以看出,alert创建的是一个模态框,如果在调试代码时不小心把alert使用在某个循环中,eg:
for(let i=0;i<10000;i++){
    test();
}

function test(){
    //  some other code ....
    alert(/** something you want to inspect */);
}

上面的这段代码一旦被执行,就会导致弹出很多次alert弹窗,页面无法正常操作,如果在低版本的浏览器中,你不得不强制结束浏览器进程,在高版本浏览器中,你至少也得结束当前标签页进程才能解决问题。不建议使用!!

  • 除此之外,我们能够使用alert调试的问题,使用其它方案也都能够替代,并且做得更好,比如使用console.log
  • 上面几点描述的都只是便利性问题,alert使用不当,还可能导致生产事故,如果你在代码中使用了 alert调试代码,却没有删除,而你的项目中没有使用到 eslint , jslint 等工具去保证质量,最终导致alert被提到了线上,最终在用户侧造成问题。

所以,大家以后debug还会使用alert么 ?

在 Web 自动化测试中,处理弹框是一项常见的任务。弹框可能包括警告、确认和提示框。Playwright 是一个功能强大的自动化测试工具,提供了处理这些弹框的灵活方法。在本文中,我们将深入探讨如何使用 Python 编写代码来处理各种类型的弹框。

弹框的分类

弹框通常分为3种,分别为alert,confirm,promot。

  • alert弹框:只有信息和确定按键
  • confirm弹框:在alert弹窗基础上增加了取消按钮
  • prompt弹框:在confirm的基础上增加了可输入文本内容的功能

三种弹框的图像分别如下:

出现弹框时,我们需要点击确定,弹框才会消失,当我们使用selenium处理弹框时,通常是使用switch_to.alert来进行处理,具体代码如下:

pythonfrom selenium import webdriver
 
driver = webdriver.Chrome()
driver.switch_to.alert.accept() #确定、同意;三种弹窗都可使用
driver.switch_to.alert.dismiss() #取消、不同意;confirm和prompt弹窗中使用
title = driver.switch_to.alert.text #打印弹窗信息
alert = driver.switch_to.alert #获取alert对象
alert.send_keys() #Prompt弹窗中输入内容

下面,我们来看看playwright是如何处理弹框的。

dialog 事件监听

playwright 框架可以监听dialog事件,不管你alert 什么时候弹出来,监听到事件就自动处理了。

当出现 JavaScript 对话框时发出,例如alert、prompt。侦听器必须dialog.accept()dialog.dismiss()对话框 - 否则页面将冻结等待对话框,并且单击等操作将永远不会完成。

处理代码如下:

pythonpage.on("dialog", lambda dialog: dialog.accept())

注:当没有page.on("dialog")侦听器存在时,所有对话框都会自动关闭。

代码如下:

pythonpage.on("dialog", handler)

处理警告框

警告框通常用于向用户显示一条消息,并要求用户采取某种操作。在 Playwright 中,我们可以使用 page.on('dialog') 方法来处理警告框。以下是一个示例:

pythonfrom playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    
    def on_dialog(dialog):
        print('Dialog message:', dialog.message)
        dialog.accept()

    page.on('dialog', on_dialog)
    page.goto('https://example.com')

在这个示例中,我们定义了一个 on_dialog 函数来处理弹框。在这个函数中,我们打印出警告框的消息并接受它。

处理确认框

确认框通常用于向用户显示一条消息,并要求用户确认或取消操作。在 Playwright 中,我们可以使用 dialog.accept() dialog.dismiss() 来分别接受或取消确认框。以下是一个示例:

pythonfrom playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    
    def on_dialog(dialog):
        print('Dialog message:', dialog.message)
        dialog.accept()

    page.on('dialog', on_dialog)
    page.goto('https://example.com')

    # Perform actions that trigger a confirm dialog
    # Your code here

在这个示例中,我们通过调用 dialog.accept() 来接受确认框。如果要取消确认框,可以调用 dialog.dismiss()

处理提示框

提示框通常用于向用户显示一条消息,并要求用户输入文本或点击确定按钮。在 Playwright 中,我们可以使用 dialog.accept(prompt_text) 来接受提示框并输入文本。以下是一个示例:

pythonfrom playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    
    def on_dialog(dialog):
        print('Dialog message:', dialog.message)
        dialog.accept('Hello, Playwright!')

    page.on('dialog', on_dialog)
    page.goto('https://example.com')

    # Perform actions that trigger a prompt dialog
    # Your code here

在这个示例中,我们通过调用 dialog.accept('Hello, Playwright!') 来接受提示框并输入文本。

总结

通过本文,我们了解了如何使用 Python 编写代码来处理不同类型的弹框。Playwright 提供了简洁而强大的 API,使得处理弹框变得非常容易。开始使用 Playwright,并加快您的 Web 自动化测试流程吧!