Как пользователю выбрать ссылку

Рейтинг: 1Ответов: 0Опубликовано: 14.02.2023

Задача такая:

Есть определенный сайт с номерами телефонов, от куда необходимо периодически получать информацию по детализации номера за текущий период. Каждый номер телефона - это ссылка, при переходе по которой, попадаем на страницу, где и можно получить эту самую детализацию. Так вот вопрос в следующем.

Пишу небольшой парсер. Сделал так:

  1. Открываем страницу авторизации и авторизуемся, попадаем на главную (статическую страницу сайта);
  2. На статической странице есть вкладка (ссылка) на страницу "Управление контрактом", далее переходим на нее с помощью программы;
  3. На странице "Управление контрактом" есть массив с номерами телефонов, где каждый номер ссылка. Вот как сделать в программе, чтобы можно было ввести определенный номер и далее попасть на страницу с детализацией и программа считала эти данные и сохранила в определенный файл. Вот сейчас конкретно завис на том, как предоставить выбор "ссылки" куда идём дальше...

Вот код, который пишу.. Если есть знатоки, помогите советом На данный момент, программа просто завершает процесс с таким выводом: Даже не важно ввел номер или нет, все равно завершает, после того, как перейдет на страницу контракты, выводит сообщение "Введите номер телефона" Нажимаю Enter и все следующая функция не срабатывает

Введите номер телефона в формате 8:

Process finished with exit code 0

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import StaleElementReferenceException
import time

driver = webdriver.Firefox()

driver.get("https://********")
time.sleep(3)

#Учетные данные
username = driver.find_element(By.XPATH, 
'/html/body/div[1]/div[2]/div[2]/div[3]/div[1]/div[3]/div[1]/form/div[2]/div[2]/div[2]/input')
username.send_keys("******")
password = driver.find_element(By.XPATH,  '/html/body/div[1]/div[2]/div[2]/div[3]/div[1]/
                                          div[3]/div[1]/form/div[2]/div[3]/div[2]/input[2]')
password.send_keys("*****")


#кнопка войти на странице авторизации
button = driver.find_element(By.XPATH, 
'/html/body/div[1]/div[2]/div[2]/div[3]/div[1]/div[3]/div[1]/form/div[3]/button[2]')

try:
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable(button))
    button.click()
except TimeoutException:
    print("Кнопка не найдена на странице")

#Переходим на страницу Управление контрактом 
kontrakt = driver.find_element(By.XPATH, '/html/body/div[1]/div[2]/div[1]/ul/li[2]')

try:
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable(kontrakt))
    kontrakt.click()
    print(kontrakt)
except StaleElementReferenceException:
    print("Element no longer attached to the DOM")

#numbers = ['1', '2']

numbers_vibor = input('''Введите номер телефона в формате 8: ''')

#справочник
numbers = {'1': "903947****",
           '2': "905989****"}

number1 = driver.find_element(By.XPATH, 
'/html/body/div[1]/div[3]/div[2]/div[1]/div/
form[2]/div/span[1]/div[2]/div[1]/table/tbody/tr[1]')

def print_detail(number1):
   try:
       if numbers_vibor in numbers:
            phone_number = numbers[numbers_vibor]
            number1 = driver.find_element(f"//a[text()='{phone_number}']")
            WebDriverWait(driver, 10).until(EC.element_to_be_clickable(number1))
            number1.click()
   except KeyError:
      print('Ошибка! Проверьте правильность введеных даннных')

#driver.close()

вывод программы #Переходим на страницу Управление контрактом
kontrakt = driver.find_element(By.XPATH, '/html/body/div1/div2/div1/ul/li2')

страница управление контрактом с массивом номеров

Ответы

Ответов пока нет.