首页 > 解决方案 > Selenium Bot:Windows 的不规则切换

问题描述

一旦我单击元素More Information,就会单击该链接,然后窗口将跳回其上一个窗口并显示TimeoutException

代码:

self.driver.window_handles
        base = "https://outlook.office.com/mail/inbox/id/AAQkADQ0ZmY1YmRkLWExNDEtNGNlYS1iOTZmLTVmNzNjMzhkNjUyMgAQAJmE%2FyrhD0supMphUUSGrmQ%3D"
        window_set = {self.driver.window_handles[0], self.driver.window_handles[1]}

        for x in window_set:
            if(base != x):
                self.driver.maximize_window()
                wait = WebDriverWait(self.driver, 10)
                self.driver.switch_to.window(x)
                frame = wait.until(EC.presence_of_element_located((By.NAME, "mainFrame")))
                self.driver.switch_to.frame(frame)
                element = wait.until(EC.element_to_be_clickable((By.ID, "mc-lnk-moreInfo")))
                element.click()

帮忙

网页图像:(包含两个选项卡)

在此图像中,更多信息已被单击并已更改为更少信息

网页图片

标签: seleniumselenium-webdriverbrowser-automationtimeoutexception

解决方案


这完成了工作!

self.driver.window_handles
        wait = WebDriverWait(self.driver, 10)
        base = self.driver.window_handles[0]
        child = self.driver.window_handles[1]
        windows = {self.driver.window_handles[0], self.driver.window_handles[1]}

        for x in windows:
            if(base != x):
                self.driver.switch_to.window(x)
                frame = wait.until(EC.presence_of_element_located((By.NAME, "mainFrame")))
                self.driver.switch_to.frame(frame)
                element = wait.until(EC.element_to_be_clickable((By.ID, "mc-lnk-moreInfo")))
                element.click()

推荐阅读