Selenium - 在检查 HTML 之前找不到可见元素?

2024-04-16

我目前正在使用 Selenium 进行网络爬虫应用程序,在几个成功的模块之后,以下情况让我陷入困境:我试图找到“菜单”类的一个元素,其文本“报告”位于名为的框架内“框架_应用”。

很简单,对吧?应该很简单:

browser = webdriver.Chrome()
#Do the necessary crawling to get to this specific menu...

browser.switch_to_frame('frame_applic')
for obj in browser.find_elements_by_class_name('menu'):
    if obj.text == 'Reports':
      bt_reports = obj    
      break

#The variable bt_reports should be the one requested.

这就是有趣的地方:虽然当我尝试切换到所需的框架时没有引发错误,但没有找到类名“menu”的元素。我肯定拼错了框架或类名,对吧?因此,在决定检查 HTML 并且不进行任何其他更改后,元素就在那里,就好像仅查看网页源代码的行为就改变了结果。这里可能发生什么?

我不允许发布完整的 HTML,但以下结构包含了该问题:

<html>
<head>
    <TITLE>Page</TITLE>
</head>
<frameset ...>
    <frame name="frame_menu" src="https:..." >
    <frame name="frame_applic" src="menu.asp?...">
    #document
        <table width="100%" border="0" cellpadding="5" cellspacing="0">

            <tr>
                <td colspan="2" align="right">
                    <table width="95%" border="0" cellpadding="5" cellspacing="0">

                        <tr><td><a href="https:..." class="menu">Reports</a></td></tr>
                        <tr><td><a href="https:..." class="menu">Change Password</a></td></tr>
                        <tr><td><a href="https:..." class="menu">Change Secret Phrase</a></td></tr>
                    </table>
                </td>
            </tr>
        </table>
        </body>

    <frame name="frame_bottom" src="https:...">
</frameset> 
</html>

经过仔细检查,我发现根本问题是所需框架的源信息位于 Active Server Page (asp) 中,如下所示:

<frame name="frame_applic" src="menu.asp?..."> 

而且无法从我所在的页面直接访问它。 检查浏览器上的元素的行为显然会强制这些元素在 webdriver 实例中共存,从而允许我获取框架内的元素,而它们以前是无法访问的。

我能够通过首先找到请求的帧,然后将网络驱动程序指向它的源来解决这个问题,方法是:

browser.get(browser.find_element_by_xpath("//frame[@name='frame_applic']")\
.get_attribute('src'))

然后像我之前所做的那样简单地获取元素:

menu_list = browser.find_elements_by_class_name('menu')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium - 在检查 HTML 之前找不到可见元素? 的相关文章

  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • 如果未引发异常,则通过 Python 单元测试

    在Python中unittest框架 是否有一种方法可以在未引发异常的情况下通过单元测试 否则会因 AssertRaise 而失败 如果我正确理解你的问题 你could做这样的事情 def test does not raise on va
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • 搜索多个字段

    我想我没有正确理解 django haystack 我有一个包含多个字段的数据模型 我希望搜索其中两个字段 class UserProfile models Model user models ForeignKey User unique
  • 默认情况下,JSF 生成不可用的 ID,这些 ID 与 Web 标准的 CSS 部分不兼容

    活跃的 JSF 或 Primefaces 用户能否解释一下为什么默认情况下会发生这种情况 为什么没有人对此采取任何措施
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 使用 html5 分块上传文件

    我正在尝试使用 html5 的文件 API 分块上传文件 然后在服务器端用 php 重新组装它 我正在上传视频 但是当我在服务器端合并文件时 大小增加了 并且它变成了无效文件 请注意 以下 html5 代码仅适用于 chrome 浏览器 在
  • 在 keras 中保存和加载权重

    我试图从我训练过的模型中保存和加载权重 我用来保存模型的代码是 TensorBoard log dir output model fit generator image a b gen batch size steps per epoch
  • 电话号码上未拾取结构化数据

    我在网站上有以下代码片段 当我通过 Google 结构化数据测试工具运行此程序时 它不会获取电话号码 我不确定我哪里错了 div class telephone number p Call Us a href 07749 918 143 a
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Python SSL X509:KEY_VALUES_MISMATCH

    Python HTTPS server from http server import HTTPServer SimpleHTTPRequestHandler import ssl https stackoverflow com a 408
  • 双击打开 ipython 笔记本

    相关文章 通过双击 osx 打开 ipython 笔记本 https stackoverflow com questions 16158893 open an ipython notebook via double click on osx
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐