html中的Selenium和iframe


问题内容

无法对iframe使用send_key()。如何选择此iframe,以及其中的哪个元素应用于send_key()?

页面图片

和iframe html代码

<iframe class="textarea" src="/framework/html/blank.html" style="width: 99%; border-width: 1px; height: 332px;">
#document
<html webdriver="true">
<head>
</head>
<body> … </body>
</html>
</iframe>

如何将值发送给描述?

我想知道的一件事是,当我在浏览器中浏览“查看页面源代码”时,框架代码不会出现吗?


问题答案:

driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))假设该驱动程序是webdriver的正常实例。要继续使用默认内容,请执行driver.switch_to.default_content()

编辑 :当您切换到所需的框架时,请像往常一样定位您的网络元素。我猜(但不确定),在您的情况下,这将是html / body,因此

el = driver.find_element_by_xpath('html/body')

应该没事。并执行

el.send_keys('keys_to_send')

EDIT2 :在发送键之前,您可能必须专注于元素(单击应执行的操作,应出现子元素)。或者,您也可以通过JS放置所需的文本。

driver.execute_script('document.body.innerHTML = "%s"' % text_var)