selenium处理登录及提示弹窗(此处以python举例,登录弹窗处理已更新)

前言

在web项目中有些功能需要调用外部应用或者提示安装插件窗口以及打开url时需要登录
此篇文章简单讲解一下如何处理这两类弹窗,因为暂未找到登录弹窗的网页,所有登录弹窗等作者后期实现了再补充

非登录弹窗处理

此处拿TX会议做个例子吧 先来看看弹窗是如何出来的

  • 首先打开网站TX会议 在输入框随意输入9位数点加入,标签页会弹出如下弹窗 ====
    在这里插入图片描述
  • 这个弹窗selenium好像是处理不了的(如果说错还望指出)
    这里我们就需要用到键盘事件来处理弹窗,因为我的电脑是Linux系统, 所以选择的是pynput库

安装库,命令如下

pip install pynput

代码如下 提示: 此段代码效果为选择弹窗中间的单选框:如果未达到效果请把sleep里面的数字加大,要选择下面的两个按钮请自行修改代码,弹窗默认聚焦到取消按钮

from time import sleep
from selenium import webdriver
from pynput import keyboard
from pynput.keyboard import Key


dri = webdriver.Chrome()
dri.get('https://meeting.tencent.com/user-center/joining?meeting_code=123456789')
key_o = keyboard.Controller()
sleep(3)

key_o.press(Key.tab)
key_o.release(Key.tab)  # 焦点切换到'打开xdg-open'按钮


key_o.press(Key.tab)
key_o.release(Key.tab)    # 焦点切换到单选框
key_o.press(Key.enter) 	# 按下回车键选择单选框
key_o.release(Key.enter) 

友情提示:press方法千万不要单独使用!!! press方法千万不要单独使用!!! press方法千万不要单独使用!!!

登录弹窗处理

登录弹窗有两种处理方式,一种和上面一样,利用pynput库实现,第二种是利用url实现,虽然利用url很简单,但是这里还是说一下第一种处理方式吧
首先和上面一样 需要安装三方库, 上面有命令这里就不写了
登陆验证框如图所示
在这里插入图片描述
代码如下

from selenium import webdriver
from pynput import keyboard
from pynput.keyboard import Key

dri = webdriver.Firefox(executable_path='D:/data/geckodriver-v0.31.0-win64/geckodriver.exe') # 这里我没设置环境变量  有环境变量不用照着写
dri.get('http://localhost:8081/manager/html') # 这个是有弹窗的页面
btn_obj = keyboard.Controller()  # 实例化类

"""进页面光标默认聚焦在用户名输入框,所以第一步就可以直接输入用户名"""
btn_obj.type('tomcat') # type函数是输入字符串的 
"""按tab键切换到密码输入框 press和release是一对的 按下后必须释放"""
btn_obj.press(Key.tab)	# 按下按钮
btn_obj.release(Key.tab)	# 释放   当然 press和release也可以用touch函数代替
""" 切换到密码输入框后输入密码"""
btn_obj.type('123456')

"""这里演示一下touch 因为tomcat密码框有回车事件,所以可以直接点回车登录"""
btn_obj.touch(Key.enter, is_press=True)
btn_obj.touch(Key.enter, is_press=False)

这里需要注意一下,用type函数需要把默认输入法改成英文,不然会失败 ,或者可以在打开网页的下一步切换为英文输入法
脚本成功输入截图
在这里插入图片描述
登录后截图
在这里插入图片描述

最简单的处理方式

这种类型的登录,通过开发者工具可以发现你输入的参数并没有被带入url后面或者payload里面,这是因为参数被放在的url前面 格式如下
协议://账号:密码@IP地址:端口/路由 如下 账号tomcat 密码123456
http://tomcat:123456@localhost:8081/manager/html
此时直接访问完整的url即可

from selenium import webdriver


dri = webdriver.Firefox(executable_path='D:/data/geckodriver-v0.31.0-win64/geckodriver.exe')
dri.get('http://tomcat:123456@localhost:8081/manager/html')
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Python Selenium 可以使用 switch_to.alert() 方法来处理弹窗。具体步骤如下: 1. 使用 driver.switch_to.alert() 方法切换到弹窗。 2. 使用 text 属性获取弹窗中的文本信息。 3. 使用 accept() 方法接受弹窗,或使用 dismiss() 方法关闭弹窗。 例如,以下代码演示了如何处理一个简单的弹窗: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.example.com") # 点击按钮,触发弹窗 button = driver.find_element_by_id("button") button.click() # 切换到弹窗 alert = driver.switch_to.alert # 获取弹窗中的文本信息 text = alert.text print(text) # 接受弹窗 alert.accept() # 关闭浏览器 driver.quit() ``` ### 回答2: Python Selenium 是一个广泛使用的自动化测试工具,可以通过编写 Python 脚本来操作浏览器完成自动化测试。在测试过程中,浏览器会弹出各种弹窗,如 alert、confirm、prompt 等,这些弹窗会干扰自动化测试的正常执行。因此,处理弹窗Python Selenium 中一个重要的话题。 对于常见的弹窗类型,Python Selenium 提供了相应的方法进行处理,下面以 alert 弹窗为例进行讲解: 首先,我们需要使用 switch_to.alert() 方法切换到 alert 弹窗: ``` alert = driver.switch_to.alert ``` 接着,我们可以使用 text 属性获取弹窗中的文本信息: ``` text = alert.text ``` 如果要在弹窗中输入文本信息,可以使用 send_keys() 方法: ``` alert.send_keys("your text") ``` 如果弹窗是 alert 类型,可以使用 accept() 方法点击弹窗中的确定按钮: ``` alert.accept() ``` 如果弹窗是 confirm 类型,可以使用 dismiss() 方法点击弹窗中的取消按钮,或者使用 accept() 方法点击弹窗中的确定按钮: ``` alert.dismiss() alert.accept() ``` 如果弹窗是 prompt 类型,还需要先使用 send_keys() 方法输入要提交的值,然后再使用 accept() 方法提交: ``` alert.send_keys("your text") alert.accept() ``` 当然,以上方法只适用于单个弹窗的情况。如果有多个弹窗依次弹出,我们需要使用循环和 try...except...finally 语句来处理: ``` try: alert = driver.switch_to.alert alert.accept() except: # 异常处理 finally: # 记得返回原窗口 driver.switch_to.default_content() ``` 总之,通过以上方法,可以轻松地处理 Python Selenium 中的弹窗,确保自动化测试正常执行。 ### 回答3: 在使用 PythonSelenium 进行网页自动化测试的过程中,经常会遇到弹窗的情况,比如 JavaScript 弹出框、警告框等。这时,我们可以使用 Selenium 的 switch_to.alert 方法来处理弹窗。 1. 获取弹窗 可以使用 driver.switch_to.alert 来获取当前弹窗的实例。如下所示: ```python alert = driver.switch_to.alert ``` 2. 处理弹窗 通常来讲,弹窗分为警告框、确认框和提示框三种类型。下面我们介绍一下它们的处理方式。 2.1 警告框 警告框通常用于指示用户一些错误操作,我们只需要点击确认按钮即可关闭它。如下所示: ```python alert = driver.switch_to.alert alert.accept() ``` 2.2 确认框 确认框通常会让用户做出选择,例如确定或取消某些操作。我们可以使用 confirm() 方法来确认或取消操作。如下所示: ```python alert = driver.switch_to.alert alert.accept() # 确认 alert.dismiss() # 取消 ``` 2.3 提示提示框常用于接收用户输入的信息,我们可以使用 send_keys() 方法向其输入信息,然后点击确认按钮。如下所示: ```python alert = driver.switch_to.alert alert.send_keys("Hello, World!") # 向输入框输入信息 alert.accept() # 点击确认按钮 ``` 需要注意的是,有些情况下输入框可能被禁用,此时我们就无法向其输入信息了。 3. 关闭弹窗处理弹窗后,我们需要将焦点重新切换回主窗口。如下所示: ```python driver.switch_to.default_content() ``` 如果我们没有处理弹窗并且需要关闭弹窗,也可以使用下面的代码: ```python driver.switch_to.alert.dismiss() ``` 通过上述介绍,相信大家已经掌握了使用 PythonSelenium 处理弹窗的方法。需要注意的是,由于不同的弹窗类型处理方式不同,因此在实际应用中需要根据具体情况进行处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值