@anya_hacker

Какой метод для нажатия на кнопку?

Перерыла все возможные методы поиска нужно элемента с помощью selenium, но почему-то ни один из них не решает поставленную задачу. Могли бы объяснить, почему ни один из следующих способов (начиная со строки
element = driver.find_element_by_class_name(....
ни один метод не может нажать на поле с вводом номера телефона вставить текст?
Как нужно правильно выбирать нужный метод?
Код:
from seleniumwire import webdriver
from time import sleep
from random import choice

phones = ['9641553668', '9640818500', '9644298904']

driver = webdriver.Chrome(
    executable_path='chromedriver.exe'
)

url = 'https://msk.dyso-srvce.ru/?utm_source=yandex&utm_medium=poisk&utm_campaign=1.1_obshie_remont&utm_content=4325113785&utm_term=%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82%20%D0%B4%D0%B0%D0%B9%D1%81%D0%BE%D0%BD&yclid=1266237122419121296'

driver.get(url)
driver.maximize_window()
sleep(7)

# =========Закрытие всплывающего окна==================
btn = driver.find_element_by_xpath("//button[@class='modalinf-link']")
btn.click()
# =========Закрытие всплывающего окна==================

element = driver.find_element_by_name('qfuserphone[]')
# element = driver.find_element_by_class_name(" phone-sl")
# element = driver.find_element_by_xpath("//input[@class=' phone-sl']")
# element = driver.find_element_by_css_selector("#input[name='qfuserphone[]']")

element.click()
element.send_keys(choice(phones))

sleep(3)

btn = driver.find_element_by_class_name("btn btn-primary sbmt-sliderr")
# btn = driver.find_element_by_name('qfsubmit')
# btn = driver.find_element_by_xpath("//input[@class='btn btn-primary sbmt-sliderr']")
# btn = driver.find_element_by_css_selector("#input[name='qfsubmit']")

btn.click()
btn.send_keys(choice(phones))

sleep(3)


Сайт:
https://msk.dyso-srvce.ru/?utm_source=yandex&utm_m...
Скрин html сайта:
6059bbc5cf438930679907.png
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Класс он на то и класс, чтобы элементов было несколько на странице. Здесь аж 14 элементов с классом " phone-sl".
С qfuserphone[] дело обстоит так же, элементов несколько, и вы выбираете неправильный.

В данном случае нужен второй элемент на странице, так что можно просто найти несколько объектов:
driver.find_elements_by_name('qfuserphone[]')

Взять второй и работать с ним. В итоге будет выглядеть как:
element = driver.find_elements_by_name('qfuserphone[]')[1]

element.click()
element.send_keys(choice(phones))


ps: кликать не обязательно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы