Я работаю над тем, чтобы сделать бота Python, который будет нажимать кнопку в списке, который повторяется сам, используя селен

Я хочу создать бота на Python, который будет выполнять мою ежедневную работу, которую я делаю неоднократно и одну и ту же работу, поэтому для этого я использую селен с хромом. Я хочу нажать кнопку, которая повторяется, но в списке, и я не смог найти способ нажать, я попробовал XPATH, но он не работает, он даже не нажимает ни разу, и я хочу нажать на него по всему списку и повторите этот процесс долго.введите сюда описание изображения Это ошибка, которую я получаю

Traceback (most recent call last): File "c:\Users\rehan\OneDrive\Desktop\python auto\relisiting.py", line 77, in <module> button = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, button_xpath))).click() 

File "C:\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\support\wait.py", line 105, in until raise TimeoutException(message, screen, stacktrace)
  
selenium.common.exceptions.TimeoutException: Message: Stacktrace: Backtrace: GetHandleVerifier [0x00F9A813+48355] (No symbol) [0x00F2C4B1] (No symbol) [0x00E35358] (No symbol) [0x00E609A5] (No symbol) [0x00E60B3B] (No symbol) [0x00E8E232] (No symbol) [0x00E7A784] (No symbol) [0x00E8C922] (No symbol) [0x00E7A536] (No symbol) [0x00E582DC] (No symbol) [0x00E593DD] GetHandleVerifier [0x011FAABD+2539405] GetHandleVerifier [0x0123A78F+2800735] GetHandleVerifier [0x0123456C+2775612] GetHandleVerifier [0x010251E0+616112] (No symbol) [0x00F35F8C] (No symbol) [0x00F32328] (No symbol) [0x00F3240B] (No symbol) [0x00F24FF7] BaseThreadInitThunk [0x75507BA9+25] RtlInitializeExceptionChain [0x7753C11B+107] RtlClearBits [0x7753C09F+191]

Это функция, которую я использовал, но она не сработала

button_xpath = "//\[@id='mount_0_0_e+'\]/div/div\[1\]/div/div\[3\]/div/div/div\[1\]/div\[1\]/div\[2\]/div/div/div\[2\]/div\[1\]/div/div\[3\]/div/div/span/div/div/div\[1\]/div/div/div/div\[2\]/div/div\[2\]/div/div\[2\]/div/div/span/div"

button = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, button_xpath))).click()

Это трюки, которые я использовал, но они не работали. Я думаю, что я неправильно использую XPath.

Это HTML кнопки

<div aria-label = "Relist this item 🅿  AvaiLabLe  📞 For price !" class = "x1i10hfl xjbqb8w x1ejq31n xd10rxx x1sy0etr x17r0tee x972fbf xcfux6l x1qhh985 xm0m39n x1ypdohk xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1o1ewxj x3x9cwd x1e5q0jg x13rtm0m x87ps6o x1lku1pv x1a2a7pz x9f619 x3nfvp2 xdt5ytf xl56j7k x1n2onr6 xh8yej3" role = "button" tabindex = "0"><div role = "none" class = "x1n2onr6 x1ja2u2z x78zum5 x2lah0s xl56j7k x6s0dn4 xozqiw3 x1q0g3np xi112ho x17zwfj4 x585lrc x1403ito x972fbf xcfux6l x1qhh985 xm0m39n x9f619 xn6708d x1ye3gou x1qhmfi1 x1r1pt67"><div class = "x6s0dn4 x78zum5 xl56j7k x1608yet xljgi0e x1e0frkt"><div role = "none" class = "x9f619 x1n2onr6 x1ja2u2z x193iq5w xeuugli x6s0dn4 x78zum5 x2lah0s x1fbi1t2 xl8fo4v"><i data-visualcompletion = "css-img" class = "x1b0d499 xep6ejk" aria-hidden = "true" style = "background-image: url(&quot;https://static.xx.fbcdn.net/rsrc.php/v3/yz/r/t2GBcB0lq1J.png&quot;); background-position: 0px 0px; background-size: auto; width: 16px; height: 16px; background-repeat: no-repeat; display: inline-block;"></i></div><div role = "none" class = "x9f619 x1n2onr6 x1ja2u2z x193iq5w xeuugli x6s0dn4 x78zum5 x2lah0s x1fbi1t2 xl8fo4v"><span class = "x193iq5w xeuugli x13faqbe x1vvkbs x1xmvt09 x1lliihq x1s928wv xhkezso x1gmr53x x1cpjm7i x1fgarty x1943h6x xudqn12 x3x7a5m x6prxxf xvq8zen x1s688f x1dem4cn" dir = "auto"><span class = "x1lliihq x6ikm8r x10wlt62 x1n2onr6 xlyipyv xuxw1ft">Relist this item</span></span></div></div><div class = "x1ey2m1c xds687c x17qophe xg01cxk x47corl x10l6tqk x13vifvy x1ebt8du x19991ni x1dhq9h x1o1ewxj x3x9cwd x1e5q0jg x13rtm0m" role = "none" data-visualcompletion = "ignore" style = "inset: 0px;"></div></div></div>

Можете ли вы отредактировать вопрос и поделиться URL-адресом сайта или HTML-кодом страницы?

Shawn 03.09.2024 11:20

Я работаю над страницей продаж в Facebook, чтобы повторно выставлять товары, которые я продаю. Я хочу нажать кнопку «перевыставить элемент», но у меня она не работает. В каждом объявлении есть кнопка, у меня в списке 6 позиций.

Rehan Sajid 03.09.2024 11:56

В текстовом формате поделитесь HTML-кодом всех кнопок «перечислить элемент».

Shawn 03.09.2024 11:59

Я добавил HTML-формат кнопки, но не редактирую его, я просто нажимаю клавишу Enter, и он сохраняется. Я здесь новенький, поэтому, если понадобится что-то еще, просто дайте мне знать.

Rehan Sajid 03.09.2024 12:13

Добавил скриншот проблемы, надеюсь поможет.

Rehan Sajid 03.09.2024 12:57
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
5
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте это выражение XPath:

# to locate first 'Relist this item' element
button_xpath = "//div[contains(@aria-label,'Relist this item')][1]"
# to locate second 'Relist this item' element
button_xpath = "//div[contains(@aria-label,'Relist this item')][2]"

и так далее.

Ответ, который вы даете, работает только для первого. я хочу нажать все кнопки ниже. Я пробовал использовать цикл, а также в жестком коде он работал только для верхнего.

Rehan Sajid 03.09.2024 15:56
Ответ принят как подходящий
for index, button in enumerate(buttons):
    try:
        print(f"Clicking button {index + 1}")
        # Scroll to the button
        scroll_to_element(button)

        WebDriverWait(driver, 10).until(EC.element_to_be_clickable(button))

        driver.execute_script("arguments[0].click();", button)
        print(f"Button {index + 1} clicked.")
        time.sleep(2) 
    except Exception as e:
        print(f"Failed to click button {index + 1}: {str(e).encode('utf-8', 'ignore')}")

Другие вопросы по теме

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

Какие замены регулярных выражений помогают при переписывании SQL-запросов MS Access как простых запросов TSQL? Как их можно зациклить с помощью Excel в качестве входных и выходных данных?
Сообщение об ошибке с использованием нескольких замен строк %s
Должны ли классы аутентификации и классы разрешений в представлениях Django REST Framework определяться с помощью списков или кортежей?
Есть ли сценарий, в котором `foo in list(bar)` нельзя заменить на `foo in bar`?
Выполняется ли простое задание в Python дважды?
Итерация (или нет?) параметров для matplotlib для построения функции в Python
Установка ограничения рекурсии не работает в автономном интерпретаторе Python, но работает в онлайн-интерпретаторах
Как вернуть результат от конечной точки fastapi, обрабатывающей массив чисел int32?
Группировка Python по рангу в двух разных направлениях
Преобразование списка строк в функции преобразования