3

我有这个。这是一个 Python 程序,用于自动从我们的实习生公司网站下载文档。我使用了 Webdriver Chrome。

为此,Python 程序打开第一个窗口 (0),提供文档编号,然后打开第二个窗口 (1) 以单击“打印”。为了确保系统将与正确的窗口进行交互,我使用了 switch_to_window()

问题是每次调用函数switch_to_window()时,它都会窃取焦点,如果我(例如)在 Outlook 中输入电子邮件,它将窃取焦点,我的输入将进入文档编号,然后,整个 Selenium 肯定会停止,因为无法找到文档编号,因为它是错误的。

问题:有没有办法在不窃取焦点的情况下更改窗口?

def csv_print():
    global browser
    global h
    numm=0
    numm_1=0
    while numm<h:
        kalknum= browser.find_element_by_id("uc_1")
        searchkalk=browser.find_element_by_id("uc_2")
        kalknum.send_keys(user_entries[numm].get())        
        searchkalk.click()
        fenetre.after(2000)
        
        window_before = browser.window_handles[0]
      
        open_kalk=browser.find_element_by_id("uc_12")
        open_kalk.click()
        fenetre.after(5000)
        
        window_after = browser.window_handles[1]
        browser.switch_to_window(window_after)
        
        element_to_hover_over=browser.find_element_by_id('uc_14')
        hover = ActionChains(browser).move_to_element(element_to_hover_over)
        hover.perform()
        
        element_to_hover_over2=browser.find_element_by_id('uc_15')
        hover2 = ActionChains(browser).move_to_element(element_to_hover_over2)
        hover2.perform()
        
        csv_dwd=browser.find_element_by_id("uc_16")
        csv_dwd.click()
        fenetre.after(5000)
        
        element_to_hover_over3=browser.find_element_by_id('uc_17')
        hover3 = ActionChains(browser).move_to_element(element_to_hover_over3)
        hover3.perform()
        
        kalk_close=browser.find_element_by_id("uc_18")
        kalk_close.click()
        fenetre.after(5000)
        
        browser.close()
        
        browser.switch_to_window(window_before)
        
        kalknum2= browser.find_element_by_id("uc_1")
        kalknum2.clear()
        fenetre.after(1)

            
        numm+=1
        numm_1+=1

谢谢 !

4

0 回答 0