在Selenium WebDriver中访问iFrame文档中的元素
我正在尝试自动化一个场景,在这个场景中,我需要访问iFrame中的元素并继续我的测试。 我目前的问题是,我能够成功地切换到iframe,但无法访问框架内的内容。 iframe中的内容是shadowdom内容,位于文档中 HTML代码如下所示::(请参阅附件) 我已经试过下面的方法并得到了成功 org.openqa.selenium.NoSuchElementException:无此类元素:无法定位元素在Selenium WebDriver中访问iFrame文档中的元素,iframe,shadow-dom,Iframe,Shadow Dom,我正在尝试自动化一个场景,在这个场景中,我需要访问iFrame中的元素并继续我的测试。 我目前的问题是,我能够成功地切换到iframe,但无法访问框架内的内容。 iframe中的内容是shadowdom内容,位于文档中 HTML代码如下所示::(请参阅附件) 我已经试过下面的方法并得到了成功 org.openqa.selenium.NoSuchElementException:无此类元素:无法定位元素 通过访问阴影根 driver.switchTo().frame("iframe_id");
driver.switchTo().frame("iframe_id");
WebElement root1 = driver.findElement(By.className("class_abs"));
WebElement shadowRoot1 = expandRootElement(root1);
这里webdriver无法按类名找到元素driver.switchTo().frame("iframe_id");
JavascriptExecutor js=(JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", driver.findElement(By.xpath("button_xpath")));
此处webdriver无法访问Xpath
三,。
切换到IFrame后使用普通Xpath
我想知道是否需要先访问iFrame中的文档内容才能访问其元素。如果是这样的话,我该怎么做呢
另外,在chrome浏览器和Firefox浏览器上都尝试过这个功能。All
我终于设法解决了这个问题。
因此,问题决议是这样的
-页面上设计的框架实际上是隐藏的。
-在切换到主帧之后,我不得不切换到隐藏帧。
-然后这些元素就很容易识别了
我面临的问题:
1.在Firefox浏览器中,当我使用过滤器“frame”检查时,在“Firefinder”中未检测到隐藏帧,该过滤器正在检测除隐藏帧以外的所有帧。“壁炉”也是如此
2.在Chrome浏览器中-虽然显示了主框架内的文档,但遍历内部并没有显示隐藏的iframe
解决方案:
在Firefox浏览器中,使用HTML选项卡检查元素有助于我识别主框架内的隐藏框架。
仔细遍历iframe隐藏文档对我很有帮助。
但是,我仍然不确定为什么Chrome浏览器“Inspect”没有显示这个框架