【问题标题】:What does #document mean?#文档是什么意思?
【发布时间】:2014-02-23 19:48:13
【问题描述】:

这是我拥有的 HTML 文件。我正在尝试使用 Selenium-Webdriver APIChromeDriversend_keysinput 归档在 <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


【解决方案1】:

只是总结一下我学到和实现的东西。

  1. document 是一个虚拟元素,实际上并没有任何意义。

  2. 如果您有多个框架/框架集,则必须切换框架。

    一个。所以首先去default content. driver.switch_to_default_content()

    b.然后到达您要使用的框架。 frame = driver.find_element_by_name('mainFrame')

  3. 然后播放该帧中的元素。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-01-20
  • 2022-01-23
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多