Код позволяющий находить xpath к кнопке заявки и к полям ввода данных в popup окне
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
import time
# Setup Selenium WebDriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
# URL of the website
url = "https://akkmir-service.ru/"
# Open the website
driver.get(url)
# Initialize WebDriverWait
wait = WebDriverWait(driver, 15)
# Wait for the buttons to be visible and clickable
buttons = wait.until(EC.visibility_of_element_located((By.XPATH, "//a[contains(text(), 'Записаться')]")))
# Variables to store the XPaths
clicked_button_xpath = ""
name_field_xpath = ""
phone_field_xpath = ""
# Click the first button and save its XPath
if buttons:
# Get XPath of the first button
clicked_button_xpath = driver.execute_script(
"""
function getElementXPath(element) {
if (element.id !== "") return 'id("' + element.id + '")';
if (element === document.body) return element.tagName;
var ix = 0;
var siblings = element.parentNode.childNodes;
for (var i = 0; i < siblings.length; i++) {
var sibling = siblings[i];
if (sibling === element)
return getElementXPath(element.parentNode) + '/' + element.tagName + '[' + (ix + 1) + ']';
if (sibling.nodeType === 1 && sibling.tagName === element.tagName)
ix++;
}
}
return getElementXPath(arguments[0]);
""", buttons)
# Клик по первой кнопке
buttons.click()
# Ожидание появления полей ввода
wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='Введите имя']")))
wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='(999) 999-99-99']")))
# Найти поля ввода
name_field = driver.find_element(By.XPATH, "//input[@placeholder='Введите имя']")
phone_field = driver.find_element(By.XPATH, "//input[@placeholder='(999)999-99-99']")
# Получение XPath полей ввода
name_field_xpath = driver.execute_script("return getElementXPath(arguments[0]);", name_field)
phone_field_xpath = driver.execute_script("return getElementXPath(arguments[0]);", phone_field)
# Wait for 10 seconds after clicking
time.sleep(10)
# Close the browser
driver.quit()
# Print XPaths
print(f"Кнопка: {clicked_button_xpath}")
print(f"Поле имя: {name_field_xpath}")
print(f"Поле номер: {phone_field_xpath}")
код по идее должен заходить на сайт находить кнопку 'Записаться' далее кликает по кнопке и в всплывшем popup окне находит поля ввода данных имени и телефона и далее выводит на print xpath пути к кнопке и полям ввода но выдает ошибку: Traceback (most recent call last): File "/home/admin/PycharmProjects/pythonProject/venv/task5/findXPATH.py", line 56, in wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='Введите имя']"))) File "/home/admin/PycharmProjects/pythonProject/venv/lib/python3.10/site-packages/selenium/webdriver/support/wait.py", line 101, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: я понимаю что можно просто в ручную найти xpath, но мне поставили задачу сдела