Функция паузы не работает в цикле elif

#python #selenium

#python #селен

Вопрос:

Я запускаю код, который автоматически присоединяется к Google meets, и самые последние несколько строк помогают перейти от одного собрания к другому. Итак, он проверяет время, если это какое-то определенное время, он присоединяется к собранию, ждет некоторое определенное время, а затем выходит из системы. затем предполагается, что он присоединяется к другому вызову, и это происходит, но на этот раз он делает это бесконечно. итак, я полагаю, что пауза в elif не работает, потому что код просто игнорирует ее и открывает собрания бесконечно. как я могу это исправить? код показан ниже:

 from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import datetime
import time
import signal
import pause

now = datetime.datetime.now()
current_time = now.strftime("%H:%M / %A")

justtime = now.strftime("%H:%M")
print (current_time)


def Glogin(mail_address, password):
    #os.system("obs --startvirtualcam amp;")
    # Login Page 
    driver.get( 
        'https://accounts.google.com/ServiceLogin?hl=enamp;passive=trueamp;continue=https://www.google.com/amp;ec=GAZAAQ') 

    # input Gmail 
    driver.find_element_by_id("identifierId").send_keys(mail_address) 
    driver.find_element_by_id("identifierNext").click() 
    driver.implicitly_wait(10) 

    # input Password 
    driver.find_element_by_xpath( 
        '//*[@id="password"]/div[1]/div/div[1]/input').send_keys(password) 
    driver.implicitly_wait(10) 
    driver.find_element_by_id("passwordNext").click() 
    driver.implicitly_wait(10) 

    # go to google home page 
    driver.get('https://google.com/') 
    driver.implicitly_wait(100)
    driver.get(sub)
    # turn off Microphone 
    time.sleep(1)
    #driver.find_elements_by_class_name("JRY2Pb")[0].click()
    driver.find_elements_by_class_name("JRY2Pb")[0].click()
    # switch camera
    time.sleep(2)
    for x in driver.find_elements_by_class_name("JRtysb"):
        x.click()
    time.sleep(2)
    for a in driver.find_elements_by_class_name("FwR7Pc"):
        a.click()
    time.sleep(2)
    for b in driver.find_elements_by_class_name("XhPA0b"):
        b.click()
    time.sleep(2)
    driver.find_element_by_tag_name('body').send_keys(Keys.TAB   Keys.TAB   Keys.ARROW_DOWN   Keys.ENTER)
    time.sleep(1)
    webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform()
    time.sleep(2)
    # Join meet 
    time.sleep(1) 
    driver.implicitly_wait(2000) 
    driver.find_element_by_css_selector( 
        'div.uArJ5e.UQuaGc.Y5sE8d.uyXBBb.xKiqt').click()
    
# assign email id and password
mail_address = 'email'
password = 'password'

# create chrome instamce 
opt = Options() 
opt.add_argument('--disable-blink-features=AutomationControlled') 
opt.add_argument('--start-maximized')
opt.add_experimental_option("prefs", { 
    "profile.default_content_setting_values.media_stream_mic": 1, 
    "profile.default_content_setting_values.media_stream_camera": 1, 
    "profile.default_content_setting_values.geolocation": 0, 
    "profile.default_content_setting_values.notifications": 1
})

while True:

    if current_time == "05:13 / Friday":
        sub = "https://meet.google.com/obu-evtm-kai"
        driver = webdriver.Chrome(options=opt, executable_path=r'/usr/bin/chromedriver') 
        Glogin(mail_address, password)
        dt = datetime.datetime(2021, 1, 29, 5, 14, 0, 0)
        pause.until(dt)
        driver.close()
    
    elif current_time == "05:14 / Friday":
        sub = "https://meet.google.com/obu-ev"
        driver = webdriver.Chrome(options=opt, executable_path=r'/usr/bin/chromedriver') 
        Glogin(mail_address, password)
        dt = datetime.datetime(2021, 1, 29, 5, 15, 0, 0)
        pause.until(dt)
        driver.close()

    
    

        

        
 

Ответ №1:

Прежде всего, вам нужно снова получить время внутри цикла while, чтобы оно не зацикливалось вечно. Тогда я предлагаю вам использовать time.sleep() вместо pause.until, потому что вам не нужно будет указывать также день.

 while True:
        now = datetime.datetime.now()
        minutes = now.strftime("%M")
        seconds = now.strftime("%S")
        today = now.strftime("%A").strip()
        minutes = int(minutes)
        hour = int(hour)


        if hour==5 and today=='Friday':
                if minutes==12:
                        sub = "https://meet.google.com/obu-evtm-kai"
                        driver = webdriver.Chrome(options=opt, executable_path=r'/usr/bin/chromedriver') 
                        Glogin(mail_address, password)
                        time.sleep(60)
                        driver.close()
                
                elif minutes == 14:
                        sub = "https://meet.google.com/obu-ev"
                        driver = webdriver.Chrome(options=opt, executable_path=r'/usr/bin/chromedriver') 
                        Glogin(mail_address, password)
                        time.sleep(60)
                        driver.close()

                elif hour==5:
                        time.sleep((72 - minutes)* 60) #It will sleep until minutes are 12