Python, Selenium Web Scraping: проблема с всплывающим окном с первой веб-страницы на вторую веб-страницуPython

Программы на Python
Anonymous
Python, Selenium Web Scraping: проблема с всплывающим окном с первой веб-страницы на вторую веб-страницу

Сообщение Anonymous »

введите код Эта проблема беспокоит меня уже несколько дней, и я не смог найти подходящего решения. В настоящее время я использую Python и Selenium для парсинга веб-страниц. После нажатия кнопки на первом веб-сайте открывается второй веб-сайт, что вызывает всплывающее окно с предупреждением. Однако, несмотря на то, что я попробовал множество методов, мне не удалось захватить всплывающее окно с предупреждением и продолжить последующие автоматические операции. Если я использую клавиатуру.press(Key.enter), другие операции могут помешать. Хотелось бы узнать, сталкивался ли кто-нибудь с подобной ситуацией и может ли предложить решение. Это момент, когда процесс каждый раз останавливается, чтобы проверить или найти окно предупреждения. Смоделированная ситуация на веб-сайте показана в HTML ниже и на Python. Большое спасибо.

Код: Выделить всё




upload picture


Open new window

Uploaded images will appear below:




let uploadCount = 0;

document.getElementById('openWindow').onclick = function() {
const newWindow = window.open('upload.html', 'Upload Image', 'width=500,height=500');
newWindow.focus();
};

window.addEventListener('message', function(event) {
if (event.origin !== window.location.origin) {
alert('Data from unknown sources!');
return;
}
uploadCount++;
const imageURL = event.data;
if (uploadCount === 1) {
document.getElementById('uploadedImage1').src = imageURL;
} else if (uploadCount === 2) {
document.getElementById('uploadedImage2').src = imageURL;
}
});




Код: Выделить всё




upload picture2

window.onload = function() {
alert('Please select a picture and upload it!');
};




upload

document.getElementById('uploadButton').onclick = function() {
const fileInput = document.getElementById('fileInput');
if (fileInput.files.length === 0) {
alert('Please select a profile!');
return;
}
const file = fileInput.files[0];
const reader = new FileReader();
reader.onload = function(e) {
window.opener.postMessage(e.target.result, window.opener.location.origin);
window.close();
};
reader.readAsDataURL(file);
};




Код: Выделить всё

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

service = Service('/usr/local/bin/chromedriver')
options = Options()
options.add_experimental_option('detach', True)

driver = webdriver.Chrome(service=service, options=options)

driver.get('http://127.0.0.1:5500/index.html')

open_window_button = driver.find_element(By.ID, 'openWindow')
open_window_button.click()

time.sleep(2)
print('sleep is over.')
# This is the point where the process stops each time to check or look for the alert window.

file_input = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'fileInput')))
file_path = ''
file_input.send_keys(file_path)

upload_button = driver.find_element(By.ID, 'uploadButton')
upload_button.click()
Помимо методов, описанных в официальной документации,
обновите страницу после входа на второй веб-сайт, чтобы повторно захватить текущее окно, увеличьте время ожидания для захвата содержимого всплывающего окна и переключитесь вернемся к главному окну выполнения...
Пока ни один из этих методов не может захватить новое окно и всплывающее окно с предупреждением. Если я вручную взаимодействую с оповещением во время процесса автоматизации, только тогда я смогу записать новую страницу браузера.

Подробнее здесь: https://stackoverflow.com/questions/785 ... the-second

Вернуться в «Python»