selenium 运行出错 element not interactable 解决方法
【前言】我遇到的情况,同类型级别的标签,在有界面的情况下运行都是正常的,在无头(界面)的情况下运行,点击第一个标签正常,点击第二个标签就会出现 element not interactable 这样的错,排错查找了好久好久才解决掉,故记录。
出现这个元素不可交互的原因可能有如下几种:
1.设置等待超时时间
- 页面程序运行比较快,但是页面还未加载该元素,导致后续的操作定位不到该元素
建议:添加selenium的超时时间,隐式等待,现实等待,线程睡眠等待。
设置等待超时:https://blog.csdn.net/qq_34846877/article/details/112079455
2.元素定位不正确
- 定位的元素的标签不正确,因为好多网页元素的id标签和class标签是动态,每次请求可能会变动
建议:采用 By.cssSelector(), By.xpath(), By.name(name), By.tagName(tagName)等多种方式尝试
元素定位:https://blog.csdn.net/qq_34846877/article/details/111629838
3.无头模式参数设置
- 如果有界面情况下正常,无头模式情况下出现 element not interactable错误
建议:添加上 options.addArguments("–window-size=1920,1080");ChromeOptions options = new ChromeOptions(); options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); options.addArguments("--window-size=1920,1080"); //建议设置窗口大小 options.setHeadless(true); //开始无头模式 driver = new ChromeDriver(options);
如上三种方法供大家参考,如果还有其它情况欢迎随时留言评论一起探讨。