Skip to content

Web 文件上传弹框处理


简介

在有些场景中,需要上传文件,而 Selenium 无法定位到弹出的文件框,以及网页弹出的提醒。这些都是需要特殊的方式来处理。


⽂件上传

driver.find_element(By.CSS_SELECTOR, "#ww_fileInput js_file")\
    .send_keys("./hogwarts.png")

弹窗处理

操作弹窗常用的方法:

  1. switch_to.alert():获取当前页面上的警告框。

  2. text:返回 alert、confirm、prompt 中的文字信息。

  3. accept():接受现有警告框,即点击确定。

  4. dismiss():解散现有警告框,即点击取消。

  5. send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框。


alert 弹框

"""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.switch_to.alert
    # 打印弹框的文本
    print(alert.text)
    # 点击确定
    alert.accept()

confirm 弹框

"""confirm 弹窗获取文本、确认、取消操作"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.wait import WebDriverWait


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()
    #点击取消
    #alert.dismiss()

prompt 弹框

"""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.accept()
    # time.sleep(2)
    alert.send_keys('xxx')
    #点击取消
    alert.dismiss()
    time.sleep(2)