WebUI自动化浏览器除了获取当前窗口tittle/url/截屏以及切换窗口以外,弹出对话框也是最常操作元素技巧之一。本篇主要讲解“对话框处理,上传文件以及刷新前进和后退”的一些基本操作,包括“alert对话框,confirm对话框,prompt 对话以及,上传文件以及refresh,forward和back”。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!
有如下的html片段:
<br>
<br>
<button id="b1" onclick='alert("I am an alert box!");'>alert对话框按钮</button>
<br>
<br>
<button id="b2" onclick='clickconf()'>confirm对话框按钮</button>
<br>
<br>
<button id="b3" onclick='clickprompt()'>prompt对话框按钮</button>
<br>
<br>
<button id="other" onclick='appendEle("按了其它按钮")'>others对话框按钮</button>
<br>
<br>
前置条件:
from selenium import webdriver
driver=webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('file:///C:/Users/qin/Desktop/python_autotest/autoUI_selenium/lesson06/al.html')
01:弹出对话框-alert
1)特点:只有确定按钮
2)写法:driver.switch_to.alert.accept()
3)注意:原生对话框操作前先切换到对话框中再进行点击按钮操作;alert无法通过元素定位,只能弹窗定位
(1)触发对话框
driver.find_element_by_id('b1').click()
(2)获取对话框文本内容
connect=driver.switch_to.alert.text
print(connect)
(3)点击确定按钮操作
driver.switch_to.alert.accept()
02:弹出对话框-confirm
1)特点:有确定和取消按钮
2)写法:确定按钮操作和alet一样,取消dismiss()
①driver.switch_to.alert.accept()
②driver.switch_to.alert.dismiss()
(1)触发对话框
driver.find_element_by_id('b2').click()
(2)点击确定按钮
driver.switch_to.alert.accept()
(3)点击取消按钮
driver.switch_to.alert.dismiss()
03:弹出对话框-prompt
1)特点:有确定和取消按钮,且能输入字符
2)写法:确定/取消按钮和confirm一样,输入字符send_keys()
①driver.switch_to.alert.send_keys()
(1)触发对话框
driver.find_element_by_id('b3').click()
(2)输入字符操作
driver.switch_to.alert.send_keys('我是小可爱')
(3)点击确定按钮
driver.switch_to.alert.accept()
(4)点击取消按钮
driver.switch_to.alert.dismiss()
04:上传文件
1)实例地址:https://tinypng.com/
2)安装win32com.client 库:pip install pypiwin32
3)原理:用win32com.client 库这个库Dispatch去构建一个WScript.Shell 这个对象,然后在用这个对象的 Sendkeys方法去给当前的程序发送一个字符串。
4)注意: 此方法只在windows环境有用且这个方法是发送字符串到你当前的焦点程序,所以自动化时不要做其他操作
import win32com.client
driver.get('https://tinypng.com/')
# 点击上传图标按钮,触发文件选择框
driver.find_element_by_css_selector("figure.icon").click()
time.sleep(3)
# 获取shell对象
shell = win32com.client.Dispatch("WScript.Shell")
# 在当前的焦点应用程序发送一个字符串
shell.Sendkeys("C:\\Users\\qin\\Desktop\\9.png" + '\r\n')
time.sleep(3)
print('上传成功')
driver.quit()
05:刷新,前进和后退操作
1)①刷新:driver.refresh()
2)②前进:driver.forward()
3)③后退:driver.back()
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('https://www.baidu.com')
(1)刷新
driver.refresh()
driver.find_element_by_id('kw').send_keys('python百度百科\n')
time.sleep(3)
(2)后退
driver.back()
(3)前进
time.sleep(3)
driver.forward()