一、简介
- 有些场景中,需要上传文件,而Selenium无法定位到弹出的文件框,以及网页弹出的提醒。这些都需要特殊的方式来处理。
二、文件上传
- input标签使用自动化上传,先定位到上传按钮,然后send_keys(指定要上传的文件路径)把路径作为值给传进去。
- 如图所示,是企业微信文件上传的页面定位到标签为input、type为file的元素信息,然后使用send_keys把文件路径作为值给传进去。
- Python语法:
driver.find_element(By.CSS_SELECTOR,"#ww_fileInput js_file")\
.send_keys("./hogwarts.png")
三、弹窗处理
-
在页面操作中有时会遇到JavaScript所生成的alert、confirm以及prompt弹框,可以使用switch_to.alert()方法定位到。然后使用text、accept、dismiss、send_keys等方法来操作。
-
操作弹窗的常用方法:
- switch_to.alert():获取当前页面上的警告框。
- text:返回alert、confirm、prompt中的文字信息。
- accept():接受现有警告框,即点击确定。
- dismiss():解散现有警告框,即点击取消。
- send_keys(keysToSend):发送文本至警告框。keysToSend是指要发送的文本。
3.1 alert弹框
-
输入一段文本点击比如提交按钮,会弹出确认内容的弹框。这种场景可以使用下面的方式处理:
-
Python语法:
"""alert弹窗获取文本与确认操作"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
def test_alert():
driver = webdriver.Chrome()
driver.get("http://sahitest.com/demo/alertTest.htm")
driver.find_element(By.NAME,"b1").click()
# 添加显示等待,等待弹框的出现
WebDriverWait(driver,5,0.5).until(ec.alert_is_present())
# 切换到弹框
alert = driver.swithch_to.alert
# 打印弹框的文本
print(alert.text)
# 点击确定
alert.accept()
# 点击取消啊或者关闭弹框
alert.dismiss()
3.2 confirm弹框
- Python语法:
"""confirm弹框获取文本、确认、取消操作"""
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
def test_confirm():
driver = webdriver.Chrome()
driver.get("http://sahitest.com/demo/confirmTest.htm")
driver.find_element(By.NAME,"b1").click()
# 添加显示等待,等待弹框的出现
WebDriverWait(driver,5).until(ec.alert_is_present())
# 切换到弹框
alert = driver.switch_to.alert
# 向弹框输入一段文本
alert.send_keys("Selenium Alert弹出窗口输入信息。")
# 点击确定
alert.accept()
3.3 prompt弹框
- Python语法:
"""prompt弹窗获取文本、输入内容、确认操作"""
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
def test_prompt():
driver = webdriver.Chrome()
driver.get("http://sahitest.com/demo/promptTest.htm")
driver.find_element(By.NAME,"b1").click()
# 添加显示等待,等待弹框的出现
WebDriverWait(driver,5).until(ec.alert_is_present())
# 切换到弹框
alert = driver.switch_to.alert
# 向弹框输入一段文本
alert.send_keys("Selenium Alert弹出窗口输入信息。")
# 点击确定
alert.accept()