Использование автоматизированного тестирования для отправки текста и изображения (снаружи) из списка exel в файл whatsapp, но не отправляет это каждому списку контактов

Зацикливание работает, когда импорт изображения не заскриптован

pre = os.path.dirname(os.path.realpath(__file__))
f_name = 'wpcontacts.xlsx'
path = os.path.join(pre, f_name)


f_name = pandas.read_excel(path)

count = 0
image_url = input("url here")

driver = webdriver.Chrome(executable_path='D:/Old Data/Integration Files/new/chromedriver')
driver.get('https://web.whatsapp.com')
sleep(25)


for column in f_name['Contact'].tolist():
    try:

    driver.get('https://web.whatsapp.com/send?phone=' + str(f_name['Contact'][count]) + '&text=' + str(
        f_name['Messages'][0]))

    sent = False
    sleep(7)
    # It tries 3 times to send a message in case if there any error occurred

    click_btn = driver.find_element(By.XPATH,
                                    '/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div/span[2]/div/div[2]/div[2]/button/span')

    file_path = 'amazzon.jpg'
    driver.find_element(By.XPATH,
                        '//*[@id="main"]/footer/div[1]/div/span[2]/div/div[1]/div[2]/div/div/span').click()

    sendky = driver.find_element(By.XPATH,
                                 '//*[@id="main"]/footer/div[1]/div/span[2]/div/div[1]/div[2]/div/span/div/div/ul/li[1]/button/span')
    input_box = driver.find_element(By.TAG_NAME, 'input')
    input_box.send_keys(image_url)
    sleep(3)




except Exception:
    print("Sorry message could not sent to " + str(f_name['Contact'][count]))
else:
    sleep(3)
    driver.find_element(By.XPATH,
                        '//*[@id="app"]/div/div/div[2]/div[2]/span/div/span/div/div/div[2]/div/div[2]/div[2]/div/div').click()



    sleep(2)
    print('Message sent to: ' + str(f_name['Contact'][count]))
count = count + 1

выход есть

Сообщение отправлено на: 919891350373

Процесс завершен с кодом выхода 0

как преобразовать этот код в цикл, чтобы я мог отправить текст на каждый номер, указанный в exel файле спасибо

Во-первых, если то, что вы написали в вопросе, является кодом, который вы используете, я не понимаю, как вы не получаете синтаксическую ошибку из-за интервала табуляции, например, здесь:

    try:

    driver.get('https://web.whatsapp.com/send?phone=' + str(f_name['Contact'][count]) + '&text=' + str(
        f_name['Messages'][0]))

Предполагаю, что это путаница, связанная с копированием-вставкой.

Далее, я просто упомяну следующее: Я очень сомневаюсь, что вам нужен 25-секундный сон для загрузки страницы, и таймаут теста по умолчанию, а таймаут по умолчанию для Selenium тестов составляет 30 секунд, поэтому с другими снами, которые вы добавили, я не уверен, почему он просто не отключается, если только вы не переопределили этот таймаут в какой-то другой части кода, которая не добавлена в вашем вопросе.

Какой смысл делать driver.get('https://web.whatsapp.com'), а затем следовать за ним еще driver.get()?

Помимо всего этого, мне кажется, что ваша проблема заключается в интервале между инкрементами count = count + 1; он не находится внутри вашего цикла for в коде, как я его вижу. Таким образом, счетчик инкрементируется не в самом цикле, а после выполнения всего цикла. Если добавление табуляции перед инкрементом count не помогает, я уверен, что вы допустили какую-то ошибку при вставке кода сюда, поэтому, пожалуйста, организуйте его так, чтобы мы могли видеть, какой код выполняется на самом деле.

Наконец, еще одно мое замечание: xpaths, которые у вас есть, пугают меня. Вы почти НИКОГДА не должны использовать абсолютный xpath (например, '/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div/span[2]/div/div[2]/div[2]/button/span'). Практически любое изменение HTML на странице приведет к поломке. У меня нет времени, чтобы найти для вас лучшие селекторы, но я настоятельно рекомендую вам изучить эти.

Сообщите мне, помогает ли что-нибудь из вышеперечисленного или нет!

Вернуться на верх