获取webView页面内窗体句柄

一般情况下切换上下文之后,就可以操作当前页面的元素控件了,但是,如果有页面跳转,可能窗体发生变化,直接元素查找会失败

因此,一般对于 WebView 页面内的元素操作,可以先获取所有的窗口句柄,遍历切换到每一个窗口句柄,直到查找到元素即可

注意:如果是单页面操作,就不涉及到窗体句柄切换

def find_element_by_web(driver: WebDriver, by: By, selector):
    """
    在webview中查找元素,涉及到切换窗口句柄:handle
    :return:
    """
    # 获取所有的handle
    all_handles = driver.window_handles

    result_element = None
​
    for handle in all_handles:
        try:
            driver.switch_to.window(handle)
            # 查找方式
            if by == By.XPATH:
                result_element = driver.find_element(By.XPATH, selector)
            elif by == By.CSS_SELECTOR:
                result_element = driver.find_element(By.CSS_SELECTOR, selector)
            print('查找成功,直接返回')
            break
        except Exception as e:
            print('查找失败,继续查找')
            pass

    return result_element

仅作为自己查看使用      参考:https://www.jianshu.com/p/e723e7e0546d

原文地址:https://www.cnblogs.com/aiyumo/p/13438407.html