Проблема вибору правильного шляху для клікання на веб-сайті та автоматизація цього процесу стає дедалі більш актуальною в сучасному світі програмування. У цій статті ми розглянемо, як вирішити цю проблему за допомогою Python і бібліотеки Selenium WebDriver.
На початку давайте звернемо увагу на конкретний випадок: необхідність автоматизації клікання по всіх посиланнях на веб-сайті hatvp.fr. Це може бути корисно, наприклад, для скрапінгу даних або тестування функціоналу веб-сайту.
Почнемо з аналізу HTML-коду сторінки. Ми помітили, що кожне посилання має клас orga-card-row
і знаходиться на веб-сторінці у вигляді елементів списку, які можна вибрати за допомогою CSS селектора a.orga-card-row:nth-child(i)
, де i
– це порядковий номер елементу. Таким чином, можна легко створити цикл for i in range
або while
, щоб клікати по кожному елементу по черзі.
Інша проблема, з якою ми зіткнулися, – це використання змінної i
в CSS селекторі. Щоб це вирішити, ми конвертуємо значення i
в рядок, використовуючи str(i)
. Проте, оскільки перший шматок коду не працює, ми не можемо гарантувати, що це рішення досить ефективне.
Нижче наведений фрагмент коду, який демонструє наш підхід до розв’язання проблеми:
1 2 3 4 5 6 |
i = 1 def wait_for_element_to_be_clickable(element): WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, element))) element = "a.orga-card-row:nth-child(" + str(i) + ")" wait_for_element_to_be_clickable(element) driver.find_element_by_css_selector(element).click() |
Цей код спробує знайти елемент з класом orga-card-row
за допомогою CSS селектора, який буде відповідати поточному значенню i
, і клікне на нього. Проте, для його успішної роботи потрібно правильно налаштувати Selenium WebDriver та мати активне з’єднання з Інтернетом.