Selenium Java无法找到元素:新标签页未切换的问题及解决
Selenium NoSuchElementException 解决:未切换到新标签页导致元素无法定位
问题代码
尝试定位页面中的select元素时使用以下代码:
driver.findElement(By.xpath("//select[@class='form-control form-control-small hidden']/optgroup[@label='mp3']")).click();
报错信息
运行后抛出元素未找到异常:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//select[@class='form-control form-control-small hidden']/optgroup[@label='mp3']"}
根因分析
打开目标URL后,内容会在新标签页加载,但代码未执行标签页切换操作,导致Selenium仍在初始标签页中查找元素,无法定位到新标签页内的目标元素。
解决方案
添加标签页切换逻辑,获取所有窗口句柄后,关闭原标签页并切换到新标签页,之后再执行元素定位操作:
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles()); driver.close(); driver.switchTo().window(tabs.get(1));
内容的提问来源于stack exchange,提问作者Prem P.
相关产品推荐
相关产品推荐

