我有一个页面开始时没有 iframe,然后通过 JavaScript 在单击锚点后添加一个 iframe。
我遇到的问题是,当切换到框架时,driver.switch_to_frame(x)
我仍然可以找到我的任何内容。
我尝试遍历找到的帧driver.find_elements_by_tag_name('iframe')
并检查每个帧以查找我希望找到的类,但没有这样的运气。
driver.switch_to_active_element()
也不给我正确的 iframe。
我不确定是否由于 JS DOM 更改未反映在 Selenium 从驱动程序中看到的内容中而无法访问 iframe 内容。我已经为其他 iframe 完成了相同的过程,没有任何问题,但这个只是不会合作。下面是我正在处理的简化版本。
JS之前:
<html>
<body>
<a onclick="jsmagic">load iframe</a>
</body>
</html>
JS之后:
<html>
<body>
<iframe><div class='modal'>Message</div></iframe>
<a onclick="jsmagic">load iframe</a>
</body>
</html>
Python WebDriver 尝试:
driver.switch_to_frame(0)
driver.find_elements_by_class_name('modal')
driver.switch_to_default_content()
我也尝试过类似的变化:
frame = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to_frame(frame)
driver.find_elements_by_class_name('modal')
我已经尝试过使用driver.execute_script
来获取对象,但获取内容超出了我的范围。有效的 Firefox 控制台命令不能通过 Selenium 运行。