首页 > 解决方案 > whatsapp bot中的硒关闭警报

问题描述

有一个机器人从文本文件向数字发送消息,但是在切换到另一个人之后,有一个需要确认的警报。

但是,当您打开下一个聊天时会发生这种情况,并且警报处理会转到下一行,但代码不会进一步移动,因为它正在等待页面打开。而且我不明白如何同时处理这两个案例

代码:

      def acceptAlert(driver):
    try:
        wait3 = WebDriverWait(driver, 10)
        Alert = wait3.until(expected_conditions.alert_is_present())
        if Alert is not None:
            driver.switchTo().alert().dismiss()
    except:
        driver.get('https://web.whatsapp.com/send?phone=7' +
                   str(e[1:]) + '&test=sdfsdf')
        time.sleep(5)

driver = webdriver.Chrome('C:\\Users\Marsel\AppData\Local\Programs\Python\Python38-32\chromedriver.exe')
test = open('base.txt', 'r')
lines = test.readlines()

i = 0

driver.get('https://web.whatsapp.com/send?phone=' + str(lines[i]) + '&test=sdfsdf')
time.sleep(15)

s = lines[i]
s = re.sub(r"[()'+']", "", s)
e = s.replace('-', '')
driver.get('https://web.whatsapp.com/send?phone=7' +
            str(e[1:]) + '&test=sdfsdf')
time.sleep(5)

while i < len(lines):        

    driver.find_element_by_xpath('/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div[2]/div/div[2]').send_keys('привет')
    time.sleep(1)
    driver.find_element_by_xpath(
        '/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div[2]/div/div[2]').send_keys(Keys.RETURN)

    s = lines[i]
    s = re.sub(r"[()'+']", "", s)
    i += 1

    acceptAlert(driver)

标签: seleniumwhatsapp

解决方案


您应该将它们拆分为单独的函数并添加 try catch 块。

def acceptAlert(driver):
    try:
        wait3 = WebDriverWait(driver, 10)
        Alert = wait3.until(expected_conditions.alert_is_present())
        if Alert is not None:
            driver.switchTo().alert().accept()
    except:
        print('No alert found')

然后在你的代码循环中调用这个方法。所以当没有alert的时候,它会等待10秒,即使没有alert仍然继续执行。


推荐阅读