在 Selenium WebDriver 中访问 iFrame 文档中的元素
Accessing elements inside iFrame documents in Selenium WebDriver
我正在尝试使我需要访问 iFrame 内的元素并继续我的测试的场景自动化。
我目前的问题是,我可以成功切换到 iframe,但无法访问框架内的内容。
iframe 中的内容是 Shadow DOM 内容并且在文档中。
HTML代码如下所示::(请参阅附件HTML)
我已经尝试了下面的方法并得到
org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素
通过访问影子根
driver.switchTo().frame("iframe_id");
WebElement root1 = driver.findElement(By.className("class_abs"));
WebElement shadowRoot1 = expandRootElement(root1);
此处 webdriver 无法通过类名查找元素。
2.By 使用 Javascript 执行器
driver.switchTo().frame("iframe_id");
JavascriptExecutor js=(JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", driver.findElement(By.xpath("button_xpath")));
此处 webdriver 无法访问 Xpath。
3。
切换到 IFrame 后使用普通的 Xpath。
我想知道是否需要先访问 iFrame 中的文档内容才能访问其元素。如果是这样,我该怎么办。
P.S- 在 chrome 和 Firefox 浏览器上都试过了。
全部,
我终于设法解决了这个问题。
所以问题的解决是这样的。
-页面上设计的框架实际上被隐藏了。
-我不得不在切换到主框架后切换到隐藏框架。
-然后元素就很容易识别了。
我遇到的问题:
1. 在 Firefox 浏览器中 - 当我使用过滤器 'frame' 检查时,在 'Firefinder' 中未检测到隐藏框架,该过滤器正在检测除隐藏框架之外的所有框架。 'Firepath'也是如此
2、在Chrome浏览器中-虽然显示了主框架内的文档,但遍历内部并没有显示隐藏的iframe。
解法:
在 Firefox 浏览器中,使用 HTML 选项卡检查元素帮助我识别主框架内的隐藏框架。
仔细遍历 iframe 隐藏文件帮助了我。
但是,我仍然不确定为什么 Chrome 浏览器 'Inspect' 不显示此框架。
我正在尝试使我需要访问 iFrame 内的元素并继续我的测试的场景自动化。 我目前的问题是,我可以成功切换到 iframe,但无法访问框架内的内容。 iframe 中的内容是 Shadow DOM 内容并且在文档中。
HTML代码如下所示::(请参阅附件HTML)
我已经尝试了下面的方法并得到 org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素
通过访问影子根
driver.switchTo().frame("iframe_id"); WebElement root1 = driver.findElement(By.className("class_abs")); WebElement shadowRoot1 = expandRootElement(root1);
此处 webdriver 无法通过类名查找元素。
2.By 使用 Javascript 执行器
driver.switchTo().frame("iframe_id");
JavascriptExecutor js=(JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", driver.findElement(By.xpath("button_xpath")));
此处 webdriver 无法访问 Xpath。
3。 切换到 IFrame 后使用普通的 Xpath。
我想知道是否需要先访问 iFrame 中的文档内容才能访问其元素。如果是这样,我该怎么办。
P.S- 在 chrome 和 Firefox 浏览器上都试过了。
全部,
我终于设法解决了这个问题。 所以问题的解决是这样的。
-页面上设计的框架实际上被隐藏了。 -我不得不在切换到主框架后切换到隐藏框架。 -然后元素就很容易识别了。
我遇到的问题: 1. 在 Firefox 浏览器中 - 当我使用过滤器 'frame' 检查时,在 'Firefinder' 中未检测到隐藏框架,该过滤器正在检测除隐藏框架之外的所有框架。 'Firepath'也是如此 2、在Chrome浏览器中-虽然显示了主框架内的文档,但遍历内部并没有显示隐藏的iframe。
解法: 在 Firefox 浏览器中,使用 HTML 选项卡检查元素帮助我识别主框架内的隐藏框架。 仔细遍历 iframe 隐藏文件帮助了我。 但是,我仍然不确定为什么 Chrome 浏览器 'Inspect' 不显示此框架。