Использование автоматизированного тестирования для отправки текста и изображения (снаружи) из списка 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 на странице приведет к поломке. У меня нет времени, чтобы найти для вас лучшие селекторы, но я настоятельно рекомендую вам изучить эти.
Сообщите мне, помогает ли что-нибудь из вышеперечисленного или нет!