Автор/Тан Сяою
Набор текста / Тан Сяою
Количество слов в статье / 1555
Время чтения / 2 минуты
Загрузка файлов — это то, с чем сталкивается каждый студент, проводящий автоматическое тестирование.,И можно сказать, что это обязательный вопрос на собеседовании.,Обычно мы используем стандартные элементы управленияsend_keys()
Загрузка будет завершена, Однако управление загрузкой на нашем тестовом веб-сайте обычно инкапсулировано само по себе, и использовать традиционную загрузку уже не так просто. То есть используйтеselenium
изAPi
Операцию загрузки невозможно завершить.。Затем ниже,Классифицируйте элементы управления для демонстрации:
Стандартное управление простое,Используйте напрямуюsend_keys
Это будет сделано,Пример кода выглядит следующим образом:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
# Открыть сайт загрузки
driver.get("http://localhost:8080/upload.html")
# Действие, запускающее загрузку файла
upload = driver.find_element(By.ID, "upload")
time.sleep(2)
# 1. Введите путь к файлу
filepath = f"e:\\demo.pdf"
upload.send_keys(filepath)
Для нестандартных элементов управления,Мы будем использовать сторонние средства для помощи в завершении операции загрузки файла.,Например, события клавиатуры、Autolt
、win32gui
(иAutolt
очень похоже),здесь сwin32gui
Возьмите пример, чтобы продемонстрировать。
Пример кода выглядит следующим образом:
import time
import win32con
import win32gui
from pathlib import Path
from selenium import webdriver
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
# Открыть сайт загрузки
driver.get("http://localhost:8080/upload.html")
paths = Path.cwd().parent
# Действие, запускающее загрузку файла
upload = driver.find_element(By.ID, "upload")
actions = ActionChains(driver)
actions.click(upload).perform()
time.sleep(2)
# Окно верхнего уровня первого уровня
dialog = win32gui.FindWindow("#32770", "Открыть")
# вторичное окно
comboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)
# Окно третьего уровня
comboBox = win32gui.FindWindowEx(comboBoxEx32, 0, "ComboBox", None)
# Окно 4 уровня -- Область ввода пути к файлу
edit = win32gui.FindWindowEx(comboBox, 0, "Edit", None)
# вторичное окно -- кнопка открытия
button = win32gui.FindWindowEx(dialog, 0, "Button", None)
# 1. Введите путь к файлу
filepath = f"e:\\demo.pdf"
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath)
# 2、Нажмитекнопка открытия
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
во время написания сценария,Всегда будет ситуация,Вот когда прокрутка опускает его вниз.,Формы, раскрывающиеся списки и кнопки не отображаются на текущей странице.,иwebdriver
поставлятьиз Все методыдействовать Текущая страница виднаизэлемент,В это время мы используемJavaScript
действовать Браузеризполоса прокрутки,Сделать элементы страницы видимыми после прокрутки,Вы можете завершить последующие операции с элементом.
Просто используйтеjs
去控制Браузерполоса прокруткииз Расположение,в использованииselenium
вызовJavaScript
действоватьjs
Заканчивать。
下面举例几种常用полоса прокруткиизjs
Пример кода выглядит следующим образом:
//Перетаскиваем полосу прокрутки вниз
document.documentElement.scrollTop=10000
window.scrollTo(0,document.body.scrollHeight)
//Перетаскиваем полосу прокрутки вверх
document.documentElement.scrollTop=0
arguments[0].scrollIntoView(false);
// Полосы прокрутки в левом и правом направлениях могут использовать метод window.scrollTo (левое поле, верхнее поле)
window.scrollTo(200,1000)
Возьмите мою страницу со списком статей в саду блога в качестве примера, чтобы продемонстрировать работу полосы прокрутки. Конкретный код выглядит следующим образом:
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.cnblogs.com/longronglang/")
driver.maximize_window()
# Получить первый элемент списка статей
element = driver.find_element(By.CSS_SELECTOR,".forFlow [role='article']:nth-of-type(1) .vertical-middle")
sleep(2)
# Перетащите полосу прокрутки страницы вниз
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
# Прокрутите полосу прокрутки до третьей позиции списка статей.
driver.execute_script("arguments[0].scrollIntoView(true)", element)
sleep(2)
# Прокрутить вверх
driver.execute_script("arguments[0].scrollIntoView(false)", element)
sleep(2)
# Прокрутите полосу прокрутки до указанной позиции
driver.execute_script("window.scrollTo(200,1000)")
Вышеупомянутое представляет собой краткое изложение некоторых распространенных методов работы с полосой прокрутки.,подробнее оjs
去控制полоса прокруткиизметод,Заинтересованные студенты могут попробовать это самостоятельно.