当通过开发工具查看时,Selenium WebDriver 无法找到页面源中不存在但 HTML 中存在的元素

2024-03-05

我正在使用 Selenium Web Driver HtmlUnitDriver 来搜索网页上的元素。 我只能搜索页面源中可见的那些元素。 不过,我可以使用 Internet Explorer 开发人员工具 (F12) 查看这些元素的详细信息。 当我使用 Selenium 使用这些详细信息(id/name/XPath)时,它会抛出org.openqa.selenium.NoSuchElementException。 我写的代码是:

public static void main(String[] args) {

        WebDriver driver = new HtmlUnitDriver(){
            @Override
            protected WebClient modifyWebClient(WebClient client) {

                DefaultCredentialsProvider credentialsProvider = new DefaultCredentialsProvider();
                credentialsProvider.addNTLMCredentials("username", "password", null, -1, "localhost", "domain");
                client.setCredentialsProvider(credentialsProvider);
                return client;
            }
        };

        driver.get("URL");

        System.out.println(driver.getPageSource());
        WebElement myDynamicElement = (new WebDriverWait(driver, 20)).until(ExpectedConditions.presenceOfElementLocated(By.id("ppm_timesheet")));

    }

页面来源

<?xml version="1.0" encoding="UTF-8"?>
    <html>
    <head>
    <meta name="application-name" content="CONTENT"/>
    <meta name="upk-namespace" content="en"/>
    <meta http-equiv="X-UA-Compatible" content="IE=8"/>
    <link rel="SHORTCUT ICON" href="ui/uitk/images/shortcut.ico"/>
    <title>
      Title
    </title>
    <link rel="stylesheet" href="ui/uitk/css/min.css"/>
    <script type="text/javascript" src="ui/ext/ext.min.js">
    </script>
    <script type="text/javascript">
    //<![CDATA[
    require( {baseUrl: "ui"},[ "uif/js/main.min" ] );
    //]]>
    </script>
  </head>
  <body>
    <div id="ppm">
    </div>
  </body>
</html>

如果我搜索元素“ppm”,则成功出现在页面源中。 当我搜索元素“ppm_timesheet”时,我收到以下异常,可能是因为该元素不存在于页面源中。 但是,当我在 Internet Explorer 中按 F12 并在开发人员工具中选择此元素时,此元素会出现在 HTML 中:

<button title="Time" class="class" id="ppm_timesheet" type="submit" jQuery171013988872804261454="13" alt="Time">

完整的例外是:

Exception in thread "main" org.openqa.selenium.TimeoutException: Timed out after 20 seconds
Build info: version: '2.8.0', revision: '14056', time: '2011-10-06 12:41:26'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1 build 7601 Service Pack 1', java.version: '1.6.0'
Driver info: driver.version: unknown
    at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:220)
    at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:188)
    at com.auto.Automation.main(Automation.java:32)
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element with ID: ppm_timesheet
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.8.0', revision: '14056', time: '2011-10-06 12:41:26'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1 build 7601 Service Pack 1', java.version: '1.6.0'
Driver info: driver.version: HtmlUnitDriver
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementById(HtmlUnitDriver.java:685)
    at org.openqa.selenium.By$ById.findElement(By.java:210)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1222)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:969)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1219)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:396)
    at org.openqa.selenium.support.ui.ExpectedConditions.findElement(ExpectedConditions.java:289)
    at org.openqa.selenium.support.ui.ExpectedConditions.access$0(ExpectedConditions.java:287)
    at org.openqa.selenium.support.ui.ExpectedConditions$3.apply(ExpectedConditions.java:86)
    at org.openqa.selenium.support.ui.ExpectedConditions$3.apply(ExpectedConditions.java:1)
    at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:173)

我读到有些元素是在客户端生成的,但在查看源代码中看不到。但这是否意味着我们根本无法访问那些不在“查看源代码”中的元素。

我已经尝试过等待元素加载 30 秒。但我仍然遇到同样的错误。

请提供您的意见,因为我已经用谷歌搜索了很多,但无法弄清楚这一点。


您要查找的元素不在页面源代码中这一事实应该不是问题。 WebDriver API 是引入显式添加对动态页面的支持 http://docs.seleniumhq.org/docs/03_webdriver.jsp#how-does-webdriver-drive-the-browser-compared-to-selenium-rc,例如其中元素是通过 JavaScript 添加的。

然而,元素仅位于 DOM 中还不够,元素还需要可见。 WebDriver 意味着仅允许用户也可以进行的交互,因此如果元素不可见,您应该例如无法通过 WebDriver 单击它。

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

当通过开发工具查看时,Selenium WebDriver 无法找到页面源中不存在但 HTML 中存在的元素 的相关文章

  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • Java:无法从同一包中的不同类访问静态变量

    这很奇怪 因为我有一个可以访问 Frame dimension getWidth 的 Character 类 及其伙伴 getHeight 但是当我想在 Map 类中使用它时 Eclipse 强调了它并且无法给我反馈 运行该程序最终会出现
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 生成的序列以 1 开头,而不是注释中设置的 1000

    我想请求一些有关 Hibernate 创建的数据库序列的帮助 我有这个注释 下面的代码 在我的实体类中 以便为合作伙伴表提供单独的序列 我希望序列以 1000 开头 因为我在部署期间使用 import sql 将测试数据插入数据库 并且我希
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin

随机推荐

  • Android:暂停录音并恢复

    我使用以下代码作为基础来创建记录器 我可以开始和停止录音 并且它会正确保存在该位置 但现在我有一个要求暂停录音机 如何暂停录音机 并恢复录音 我在我的三星 Galaxy Ace 中看到了一个录音应用程序 它有一个暂停按钮 有人可以启发我吗
  • 使用按位运算符计算两个数字的和

    我粘贴代码以使用按位运算符查找两个数字的总和 请建议是否可以优化 谢谢 public static int getSum int p int q int carry 0 result 0 for int i 0 i lt 32 i int
  • JSP+Tomcat:单点登录

    如何使用 Tomcat 服务器为许多 JSP 应用程序创建单点登录的最佳方式 一种可能性是使用 Tomcats 构建 SSO 机制 http tomcat apache org tomcat 5 5 doc config host html
  • C++ 11 标准是否保证 std::atomic<> 实现为无锁操作?

    我正处于一个十字路口 我试图在基于互斥锁的数据结构和无锁 可能还有无等待 数据结构之间选择一个 在深入挖掘时 我没有发现有关 C 11 标准是否支持原子类型的无锁操作的任何消息 甚至对于基于宽度的积分 例如atomic uint32 t 换
  • 半透明 JFrame 边框

    我想让 JFrame 边框透明 所以我尝试使用我自己的 Border 类来做到这一点 private class ShadowBorder extends AbstractBorder private static final int RA
  • Java 中字符串(非结构化数据)的 K 最近邻实现

    我正在寻找 Java 中针对非结构化数据的 K 最近邻算法的实现 我发现了许多数字数据的实现 但是我如何实现它并计算文本 字符串 的欧几里得距离 以下是 double 的一个示例 public static double Euclidean
  • Python:如何使用 OpenCV 从网络摄像头捕获图像

    我想使用 OpenCV 从网络摄像头捕获并保存大量图像 这是我目前的代码 import cv2 camera cv2 VideoCapture 0 for i in range 10 return value image camera re
  • React Native导航组件路由问题

    新的反应本机用户在这里 我遇到了问题 不知道如何继续 我能够正确运行反应导航 然后开始收到错误 路由组件必须是 React 组件 但除非我遗漏了某些内容 否则我相信我引用的组件is一个反应组件 请参阅下面的 index android js
  • 如何转义 Ansible YAML 文件中字符串中的冒号?

    我想在安装过程中更改文件 var www kibana config js 中的一行代码 elasticsearch http window location hostname 9200 to elasticsearch http 192
  • Shell 脚本用户提示/输入

    这是别人写的一个粗略的 korn shell 脚本 我对使用 shell 语法不太了解 我什至不确定这是否可行 有什么方法可以让我运行这个文件并提示输入日期 这样我就不必每次都手动进入脚本并更改它 例如 我想将 1 12 09 替换为从用户
  • Qt:将变量传递给子项目

    我的项目的结构如下 Proj Proj pro subProj subProj pro subsubProj subsubProj pro 有没有一种方法可以在 subProj pro 中实例化全局变量并调用它 例如subsubProj p
  • Scala双重定义(2个方法具有相同的类型擦除)

    我用 scala 编写了这个 但它无法编译 class TestDoubleDef def foo p List String def foo p List Int 编译器通知 error double definition error m
  • .Net WikiText 到 HTML 解析器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道 我知道 这听起来很愚蠢 但似乎没有开源强大的 NET 库可以将 Wikitext 解析为 HT
  • Python、Numpy、OpenCV——创建修改后的(同样快的)“addWeighted”函数

    我正在用 python 编写一个程序 该程序使用的函数与addWeightedopenCV 中的函数 不同之处在于 它实际上并不添加表示图像的 numpy 数组 而是采用在任何特定坐标处更亮的像素并使用该值 然而 我发现 尽管这些函数做的事
  • 有没有办法在 Azure Static Web App 中查看文件?

    有没有办法使用Azure Portal查看上传到Azure Static Web App的文件 我需要检查一些项目 我可以在 DevOps Repo 中看到该文件 但想确认它位于 Azure Static Web App 中的正确文件夹结构
  • 如何将参数发送到前置过滤器?

    我想在我的应用程序控制器中创建一个 before filter 方法 如下所示 def check role role name unless logged in user has role role name flash notice A
  • 伪造 HTTP 请求响应以在 Android 中进行测试

    我正在编写一个 Android 应用程序 有时需要通过 HTTP 从 REST API 请求数据 我正在使用 Apache DefaultHttpClient 来执行请求 有没有办法为此应用程序编写测试并在运行测试时 替换 DefaultH
  • 迭代前默认选择 Angular 设置下拉选择选项

    我有一个选择下拉菜单 并从列表中迭代选项 我试图设置为选定的单独选项 作为默认值 以防用户未选择值 以下是我尝试实现的方法
  • 在 XCode 中找不到应用程序证明功能

    根据 App Check Firebase 文档 据说可以将 App Attest 功能添加到您的应用程序中 但是 我在 XCode 中找不到任何此类功能 对此有什么见解吗 注意 我们已在配置文件中启用功能 文档链接 https fireb
  • 当通过开发工具查看时,Selenium WebDriver 无法找到页面源中不存在但 HTML 中存在的元素

    我正在使用 Selenium Web Driver HtmlUnitDriver 来搜索网页上的元素 我只能搜索页面源中可见的那些元素 不过 我可以使用 Internet Explorer 开发人员工具 F12 查看这些元素的详细信息 当我