Edge IE模式下Selenium无法操作输入框的问题求助
解决Selenium操作IE模式Edge输入框的ElementNotInteractableException问题
以下是几个可行的解决思路:
用显式等待替代time.sleep
固定时长的sleep不一定能等到元素真正可交互,显式等待可以精准等待元素达到可点击状态:from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化driver代码不变 ieOptions = webdriver.IeOptions() ieOptions.add_additional_option("ie.edgechromium", True) ieOptions.add_additional_option("ie.edgepath",'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe') driver = webdriver.Ie(executable_path='C:\\Program Files (x86)\\IEDriverServer.exe', options=ieOptions) # 最长等10秒,直到元素可点击 wait = WebDriverWait(driver, 10) UserName = wait.until(EC.element_to_be_clickable((By.ID, "UserName"))) UserName.send_keys(ID)先滚动到元素位置再操作
有些元素可能不在当前视图范围内,导致Selenium判定不可交互,先把元素滚动到视野里:UserName = driver.find_element(By.ID, "UserName") # 执行JS滚动到元素位置 driver.execute_script("arguments[0].scrollIntoView(true);", UserName) UserName.send_keys(ID)通过JavaScript强制输入
如果元素本身存在但Selenium无法交互,直接用JS修改它的value属性绕开限制:UserName = driver.find_element(By.ID, "UserName") driver.execute_script("arguments[0].value = arguments[1];", UserName, ID)调整IE驱动的配置选项
试试添加这些选项,解决原生事件或保护模式的问题:ieOptions = webdriver.IeOptions() ieOptions.add_additional_option("ie.edgechromium", True) ieOptions.add_additional_option("ie.edgepath",'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe') # 启用原生事件支持 ieOptions.add_argument("-nativeEvents") # 忽略IE保护模式设置(也可以手动把IE所有区域的保护模式设为相同级别) ieOptions.add_argument("-ignoreProtectedModeSettings") # 忽略浏览器缩放级别 ieOptions.add_argument("-ignoreZoomSetting") driver = webdriver.Ie(executable_path='C:\\Program Files (x86)\\IEDriverServer.exe', options=ieOptions)检查版本匹配
确保IEDriverServer的版本和你的Edge(IE模式)、IE浏览器版本一致,大版本必须匹配,比如Edge是118.x,就用118.x的IEDriverServer。
内容的提问来源于stack exchange,提问作者FallenEgg
相关产品推荐
相关产品推荐

