Title

12、Selenium其他常用的操作(文件上传、页面截图、对话框)

文件上传

在Selenium webdriver中文件上传操作并不复杂,只需要定位到上传文件的按钮,通过按钮调用send_keys()方法就能实现文件上传

注意事项

  • 调用send_keys()方法需要一个参数,就是需要上传文件的路径,注意路径需要转义符
  • 路径中不要中文
  • 格式:driver.find_element_by_link_text('上传').send_keys('文件路径')

代码示例

# 图片上传操作,定位上传图片按钮。调用send_keys()
driver.find_element_by_xpath('//*[@id="dv_if_container"]/form/input').send_keys(r'E:\photo\111.png')
sleep(3)

# 点击保存按钮
driver.find_element_by_id('btn_save_img').click()

 

页面截图

在我们编写脚本过程中,有时候需要页面截图来直观的展现错误,如何进行截图操作

截图方法:get_screenshot_as_file(self,filename)

代码示例

driver.get_screenshot_as_file(r"路径\图片名称")

alert对话框操作

扩展知识:

  • 对话框分为三类:警告对话框、确认对话框、提示对话框
    • 警告对话框:提供一个确定按钮让用户关闭对话框,属于模式对话框,也就是说必须关闭对话框才能进行后续操作
    • 确认对话框:向用户提示一个是与否的问题,例如是否删除数据,一般给出确定和取消按钮
    • 提示对话框:提供一段文字提示,用户可以输入一个答案来响应提示,也有确定按钮和取消按钮,确定按钮点击会响应对应的提示信息,取消按钮会关闭对话框
  • Selenium提供的switch_to_alert()方法能够定位到所有类型的对话框,进而操作对话框
    • 获取对话框文本:text
    • 点击确定按钮:accept()
    • 点击取消按钮:dismiss()
    • 输入内容:send_keys()
  • 根据对话框的特性,我们可以得出结论,
    • 只有提示对话框可以使用send_keys(),方法,因为只有它能输入内容;
    • 警告框没有取消按钮不能使用dismiss()方法

代码示例

from time import sleep
from selenium import webdriver

# 获取浏览器驱动
driver = webdriver.Chrome()

# 打开百度网页
driver.get('https://xxx.xxx.com')

# 定位对话框
alert = driver.switch_to_alert()
# 控制台输出对话框文本
print(alert.text)
# 点击对话框确定按钮
alert.accept()
# 点击对话框取消按钮
alert.dismiss()
# 对话框回复内容
alert.send_keys('回复文本')
# 浏览器窗口最大化
driver.maximize_window()
posted @ 2023-04-02 20:17  huayaofan  阅读(61)  评论(0)    收藏  举报