Selenium webdriver 无法点击页面外的链接

2024-03-31

我在使用 Selenium WebDriver 时遇到问题。我尝试单击窗口页面外部的链接(您需要向上滚动才能看到它)。我当前的代码相当标准:

menuItem = driver.findElement(By.id("MTP"));
menuItem.click();
// I also tried menuItem.sendKeys(Keys.RETURN);

我知道我可以向上滚动,在这种情况下它会起作用。但如果您有很长的项目列表,您不一定知道需要向下滚动多远。

有什么方法可以单击不在页面可见部分的链接(但如果滚动则可见)?

顺便说一句,我正在使用 Firefox,但我也计划使用 IE7/8/9 和 Chrome。

任何帮助将不胜感激。

编辑:恐怕我不能提供源代码,因为我工作的公司不允许,但我可以提供我想点击的链接的代码:

<div class="submenu">
  <div id="MTP">Link title</div>
</div>

当链接可见时,完全相同的代码可以工作,只有当链接不可见时,它才不起作用。

Edit2:实际上,奇怪的是,它不会引发任何异常,只是转到下一条指令。基本上,发生的事情是:

menuItem = driver.findElement(By.id("MTP")); // no exception
menuItem.click();  // no exception
//... some code ensuring we got to the next page: timeout reached
driver.findElement(By.id("smLH")).click(); // NoSuchElementException, as we're on the wrong page.

实际上可以自动滚动到元素。尽管在这种情况下这不是一个好的解决方案(必须有一种方法可以使其在不滚动的情况下工作),但我会将其作为解决方法发布。我希望有人能想出更好的主意......

public void scrollAndClick(By by)
{
   WebElement element = driver.findElement(by);
   int elementPosition = element.getLocation().getY();
   String js = String.format("window.scroll(0, %s)", elementPosition);
   ((JavascriptExecutor)driver).executeScript(js);
   element.click();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium webdriver 无法点击页面外的链接 的相关文章

  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 从 GitHub 上托管的 Spring Cloud Config Server 访问存储库的身份验证问题

    我在 GitHub 上的存储库中托管配置 如果我将回购公开 一切都好 但如果我将其设为私有 我将面临 org eclipse jgit errors TransportException https github com my user m
  • 如何在 Spring 属性中进行算术运算?

  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • Spring表单ModelAttribute字段验证避免400 Bad Request错误

    我有一个ArticleFormModel包含正常发送的数据html form由 Spring 使用注入 ModelAttribute注释 即 RequestMapping value edit method RequestMethod PO

随机推荐

  • require未定义如何解决?

    我跟着本教程 https github com manoharkhadka1 laravel chat app创建一个聊天应用程序vuejs questions tagged vuejs and laravel questions tagg
  • phpMyAdmin 不会停止抛出“#1130 - 主机‘localhost’不允许连接到此 MySQL 服务器”

    我正在尝试进入http localhost phpmyadmin index php但我不断得到 Error MySQL said 1130 Host localhost is not allowed to connect to this
  • 如何从另一台服务器中的存储过程运行作业?

    是否可以从位于不同服务器的存储过程运行作业 如果是这样 怎么办 那么为什么不考虑使用 exec LINKEDSERVERNAME msdb dbo sp start job Job Name 虽然没有测试过 也许一些看不见的答案是一样的 但
  • AWS IAM SSM - 限制实例可以运行的文档

    有没有办法限制 EC2 实例的 IAM 策略 它只能运行一小部分文档 我尝试限制对 ssm GetDocument 的访问 如下所示 Version 2012 10 17 Statement Effect Allow Action ssm
  • 当在没有外部 div 的情况下使用多个 React DOM 组件时,JSX 将无法编译

    考虑这个无法编译的例子 jsx React DOM var Hello React createClass render function return div Hello div var World React createClass r
  • std::construct_at 是否使联合的数组成员处于活动状态?

    看这个例子 godbolt https godbolt org z fh888f5ab include
  • 有 H2 数据库的实际经验吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 某些快捷方式在 Ubuntu 中的 Android Studio 中不起作用

    My AndroidStudio版本是 2 3 1 我的键盘映射是 XWin 的默认值 With this keymap the shortcut for Find Usages is Alt F7 but it not work so n
  • 与 (Child)FragmentManager 正确使用子子片段

    如何正确使用Fragment中的Fragments 我的 简化的 用例如下 我有一个带有布局片段的活动 并且该片段本身包含一个子片段 所有片段都手动添加到其父级 Activity
  • gccfilter 和 gcc 4.7.2 不起作用,停止编译

    我已经成功安装了海湾合作委员会过滤器 http www mixtion org gccfilter http www mixtion org gccfilter 在我的工具链中 过滤器实际上应该工作 因为所有 perl 模块和其他东西都已安
  • 如何通过 liquibase 更改自动增量列的起始值?

    我的数据库使用 MySql 我已经找到了如何在创建表时设置列的起始自动增量值 但我需要知道如何为现有列设置新的起始值 执行此操作的 liquibase 脚本是什么样的 MySQL 语法非常简单 ALTER TABLE mytable AUT
  • 我想将我的 firebase 信息与我的邮件连接起来

    我刚刚创建了一个联系表单 并使用 firebase 实时数据库来获取想要联系我的网站访问者的信息 现在 每次访问者从网站发送联系人提交时 我希望收到一封包含 firebase 信息表单的电子邮件 如何将 firebase 实时数据库与我的电
  • 如何在给定的时间间隔运行 Unix 命令?

    我想运行 Unix 命令 例如ls 通过脚本每隔 5 分钟一次 解释 我有一个 Unix 脚本 在该脚本中我有一个名为 ls 的命令 我希望该脚本中的 ls 命令每 5 分钟运行一次 Use watch The nflag 指定以秒为单位的
  • ObservableCollection 的替代品?

    我正在寻找替代品ObservableCollection这是线程安全的 在 UI 线程上引发事件 并且最好有一个AddRange方法 我已经在此处和其他地方看到了一些实现 但我更喜欢已经过测试和验证的实现 并且我不必自己维护 那么有人可以向
  • 使用符号批量输入时的张量流 LSTM 模型样本

    我正在为句子构建下一个字符预测 LSTM 我正在关注这里的教程https indico io blog tensorflow data inputs part1 placeholders protobufs queues https ind
  • 使用SBT构建纯Java项目

    过去我曾使用 Ant Ivy 或 Maven 来构建我的 Java 项目 我现在正在寻找非基于 xml 的解决方案 Gradle 可以编译 jar 和发布我的项目 几乎没有问题 我可以用 SBT 做同样的事情吗 如果是这样 您能否提供一个使
  • SQL 排名百分位

    我做了一个 SQL 查询 根据页面被查看的次数对页面进行排名 例如 PAGE VIEWS J 100 Q 77 3 55 A 23 2 6 现在我想做的是使用 SQL 查询找到每个页面的百分位数排名 我想使用的数学非常简单 我只想将已生成的
  • 下载大型视频文件被损坏

    在服务器端代码中 我将缓冲区大小和内容长度设置为文件长度 然后使用打开文件文件输入流 稍后使用获取输出流HttpResponse getOutputStream 并转储使用读取的数据字节文件输入流 我正在使用 Apache Tomcat 7
  • 使用希伯来数字自定义
      编号

    我想要一个使用希伯来字母数字的编号列表 就像希伯来语书籍中常见的那样 拉丁语表示法使用数字 0 9 而希伯来语则按字母顺序编号 但有时值会发生变化 我不知道这在 CSS 中是否可行 但也许在 JavaScript 中可行 我基本上想要这样的
  • Selenium webdriver 无法点击页面外的链接

    我在使用 Selenium WebDriver 时遇到问题 我尝试单击窗口页面外部的链接 您需要向上滚动才能看到它 我当前的代码相当标准 menuItem driver findElement By id MTP menuItem clic