【发布时间】:2017-06-18 17:40:53
【问题描述】:
我浏览了一些关于 SO 的帖子,并使用了建议的切换到 iframe 的方法 -
driver.switch_to.frame(driver.find_element_by_id(iFrameID))
element = driver.find_element_by_xpath('HTML/BODY')
但是,我得到一个 NoSuchElementException 用于 xpath 的查找。
然后我在切换到iframe后添加了print (driver.page_source),看到了如下结构-
<HTML dir=ltr><HEAD><LINK rel=stylesheet type=text/css
href="/_layouts/1033/styles/core.css">
<META name=GENERATOR content="MSHTML 11.00.9600.18639"></HEAD>
<BODY class=ms-formbody contentEditable=true style="BORDER-TOP: medium none;
BORDER-RIGHT: medium none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium
none; BACKGROUND-COLOR: white" scroll=yes WebLocale="1033"
BaseElementID="baseTextField" wordWrap="false" RestrictedMode="true">
<DIV></DIV></BODY></HTML>
HTML/BODY 结构肯定存在,所以我不确定我在 find_element_by_xpath 中做错了什么。我还尝试了 /HTML/BODY 和//HTML/BODY,但没有成功。
作为一种解决方法,我尝试通过单击 iframe 然后使用 ActionChains 使 RTE 成为焦点
driver.find_element_by_id(iFrameID).click()
actions = ActionChains(driver)
actions.send_keys("Lorem Ipsum")
actions.perform()
但出现以下错误:
NameError: name ActionChains is not defined
任何帮助将不胜感激
【问题讨论】:
-
如果您可以发布您的源代码,我可能会提供帮助:)
-
很明显你缺少导入,试试
from selenium.webdriver import ActionChains -
你真的可以复制粘贴你试图切换到的
<iframe>标签的HTML吗?driver.page_source的输出已被截断。停止依赖这种方法......它是不一致的,并且不会做你认为它做的事情。 @AzatIbrakov 他正在尝试切换到iframe,正如您所指出的,他首先遇到了库导入。但是,对于driver.find_element_by_id(iFrameID).click()命令,他仍然会收到NoSuchElementException错误。 -
@Sid 您能否考虑更新您尝试切换的 iframe 的 HTML DOM?切换到 iframe 后,请更新下一步。谢谢
-
@Sid,你为什么要点击
iframe并发送文本到ActionChains()实例!?分享你到底想做什么,因为现在你的逻辑还不清楚
标签: python selenium iframe selenium-webdriver