【发布时间】:2014-02-23 19:48:13
【问题描述】:
这是我拥有的 HTML 文件。我正在尝试使用 Selenium-Webdriver API 和 ChromeDriver 到 send_keys 到 input 归档在 <body> 中。但我无法访问#document 中的任何内容。我不知道为什么。有人可以告诉我这个#document 是什么意思吗?我如何使用 Selenium 访问其中的任何元素。
<html>
<head>…<head>
<frameset >
<frame>...</frame>
<frame name="mainFrame" src>
#document
<html>
<head>…</head>
<body>…</body>
</html>
</frame>
</frameset>
</frameset>
这是一个路由器网页,实际网页很大,所以我没有在这里粘贴。
【问题讨论】:
-
理想情况下,我想知道如何访问此#document 中的元素。我尝试过使用
find_elements_by_xxx的传统方法,但没有得到任何结果。我也想知道#document 是什么意思,因为我无法通过谷歌搜索得到答案。 -
好的,谢谢@user2864740。我刚刚在我的原始帖子中添加了屏幕截图。如果您看到了,我需要使用的实际 HTML 位于 #document 中。 @ user1177636 我已经尝试过,切换框架和默认内容等。没有任何帮助。当我使用
document.getElementsbyName('')之类的命令时,即使在 Chrome 开发工具控制台中也找不到这些元素。似乎#document 下的所有内容都是不可见的。 -
@deepng 那是一个“虚拟元素”。这是一种 Chrome 特有的方式,表明它是 不同(嵌入式)DOM 的一部分 - 您不能使用或查询它(因为“虚拟元素”不作为 DOM 的一部分存在)来自代码。
-
@deepng 所以不要找“#document”,而是找任务,比如“selenium frames”——stackoverflow.com/questions/15464808/…,stackoverflow.com/questions/6060557/…YMMV
-
@user2864740,谢谢,它成功了。我将代码放在下面,仅供将来参考。在这里,由于有多个帧,我们必须切换到默认内容,然后移动到我们选择的帧。
driver.switch_to_default_content()frame =driver.find_element_by_name('mainFrame')driver.switch_to_frame(frame)elem = driver.find_element_by_xpath('//input[@name="ui_pws"]')
标签: html selenium selenium-webdriver selenium-chromedriver