Home > Back-end >  using automated testing to send text and image(outside) from exel list to whatsapp file but not send
using automated testing to send text and image(outside) from exel list to whatsapp file but not send

Time:08-09

Loop works when import image is not scripted

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

output is

Message sent to: 919891350373

Process finished with exit code 0

how convert this code into loop so that i can send text to every no. mentioned in exel file thanks

CodePudding user response:

Firstly, if what you've written in the question is the code you are using, I am confused how you aren't getting a syntax error due to the tab spacing eg here:

    try:

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

I am going to assume this is a mixup related to copy-paste.

Next, I'll just mention the following: I highly doubt you need a 25-second sleep for the page to load, and the default test timeout, and the default timeout for Selenium tests is 30 seconds, so with the other sleeps you've added I'm not sure why it's not simply timing out unless you've overridden this timeout in some other part of the code that's not added in your question.

What is the point of doing driver.get('https://web.whatsapp.com'), then following it with another driver.get()?

All this aside, it would make sense to me that your problem lies with the spacing for your increment count = count 1; it is not inside your for loop in the code as I see it. So, the count is not actually incremented in the loop itself but rather after the whole loop is executed. If it does not help to add a tab before the count increment, I'm quite sure that you've made some mistake(s) pasting the code here so please organize it such that we can see what code is actually being executed.

Finally, another comment I have: the xpaths you've got scare me. You should almost NEVER use an absolute xpath (like '/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div/span[2]/div/div[2]/div[2]/button/span'). Just about any change to the HTML on the page will cause this to break. I haven't the time to find better selectors for you, but I highly recommend you examine these.

Let me know whether any of the above helps or not!

  • Related