提问人:Uri 提问时间:3/3/2015 更新时间:9/21/2022 访问量:57074
如何使用 Xpath 选择 iframe 中的元素?
How do I select elements inside an iframe with Xpath?
问:
我想创建一个 Selenium 测试来测试我们的 AOL 邮件扩展。我设法登录了AOL并撰写了一封电子邮件,但我还需要在编辑器中选择元素,该编辑器位于iframe中。我检查了一下,即使编辑器打开,以下测试也失败了:
self.assertEqual(first=1, second=len(self.driver.find_elements_by_xpath(xpath="//iframe[@name='editor_body']//body[@contenteditable='true']")))
我收到错误。如何通过 Xpath(或以任何其他方式使用 Selenium)选择 iframe 和其他元素的主体?AssertionError: 1 != 0
答:
36赞
ddavison
3/3/2015
#1
在切换到它们之前,您不能遍历 。你的 xPath,<iframe>
//iframe[@name='editor_body']//body[@contenteditable='true']
将不起作用,因为标记位于 iFrame 中,而 iFrame 不在当前上下文中。您需要先切换到它:<body>
driver.switch_to.frame('editor_body')...
评论
5赞
Uri
3/3/2015
谢谢,它有效!我用self.driver.switch_to.frame(frame_reference=self.driver.find_element_by_xpath(xpath="//iframe[@name='editor_body']"))
0赞
Jeremy Moritz
2/23/2016
我将如何使用 Selenium 节点做到这一点?
0赞
ddavison
2/23/2016
无论您是在本地运行,还是使用节点,结果都是一样的。
1赞
Guilherme Borges Bastos
9/21/2022
#2
如果您在 Selenium 自动化测试期间遇到问题,这里有一些可以解决我问题的信息:
默认情况下,Selenium 可以访问父浏览器驱动程序。为了访问框架内部,驱动程序的焦点必须从主浏览器窗口转移到 iframe(frame)。
因此,如果您碰巧必须在 iframe 中执行断言,然后返回主窗口进行其他交互,则需要根据目标更改驱动程序的焦点。
更多信息请访问:https://www.tutorialspoint.com/how-do-i-select-elements-inside-an-iframe-with-xpath
评论
.switch_to().frame(element)
self.driver.switch_to.frame(frame_reference=self.driver.find_element_by_xpath(xpath="//iframe[@name='editor_body']"))