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