在 Clojure 中实现 Java 泛型接口

2023-12-20

我正在尝试使用 selenium2/webdriver 项目来掌握 clojure 的窍门网络驱动程序-clj http://github.com/mikitebeka/webdriver-cljwebdriver 的包装器。

然而,由于网络界面是大量脚本化的,我需要有一个选项来等待脚本创建某些元素,而不是在页面加载时。

所以我试图在 clojure 中创建一个等待函数,使用WebDriver等待 http://code.google.com/p/selenium/source/browse/trunk/support/src/java/org/openqa/selenium/support/ui/WebDriverWait.java类来按属性测试元素,最好使用 webdriver/by- 函数中的 clojure 语法。

然而,waiter 类 Until 方法采用通用接口 (com.google.common.base.Function) 作为参数,并且由于我的 Java 知识几乎不存在,这对于我刚刚起步的 clojure 技能来说太过分了。

任何人都具有 clojure-java 互操作技能,并且知道如何在 clojure 中实现以下 java 代码,以便它与 webdriver/by- 语法相结合?

Function<WebDriver, WebElement> presenceOfElementLocated(final By locator) {
return new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
};}

// ...
driver.get("http://www.google.com");
WebDriverWait wait = new WebDriverWait(driver, /*seconds=*/3);
WebElement element =
wait.until(presenceOfElementLocated(By.name("q"))

结果应该使这样的事情成为可能

(defn test []
  (let [driver (webdriver/new-driver :firefox)]
    (webdriver/get driver "http://127.0.0.1/")
    (webdriver/wait-for (webdriver/by-name "button"))
    ))

我对 webdriver 一无所知,但实现接口的 clojure 方法是 proxy 和 reify(还有 deftype 和 defrecord,但这些可能与这里无关)。使用 reify,实现该接口将类似于

(defn presence-of-element-located [locator]
   (reify Function
      (apply [this driver]
         (.findElement driver locator))))

Clojure 不以任何方式处理泛型,但 Java 泛型的类型参数在运行时不存在,因此您应该能够将 Function 接口的实现传递给任何需要任何类型 Function 的对象。

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

在 Clojure 中实现 Java 泛型接口 的相关文章

  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • 如何解决 onEditCommit 事件上的类型不匹配错误?

    我在 Fxml 中使用 onEditCommit 事件在用户编辑数据后检索数据 FXML 代码
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想用 Java 开发一个像 Fac
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • ASP.NET MVC - 根据 Active Directory 对用户进行身份验证,但需要输入用户名和密码

    我正在开发一个 MVC3 应用程序 该应用程序需要根据 AD 对用户进行身份验证 我知道 MVC3 中有一个选项可以创建一个 Intranet 应用程序 该应用程序自动根据 AD 对用户进行身份验证 但它使用 Windows 身份验证并自动
  • 如何在 VB6 中重新初始化 UDT?

    我有一个循环 它读取一堆 XML 文件 对于每个文件 它验证 XML 中的数据并将其加载到一些 UDT 中 然后对数据进行一些处理 然后它返回到循环的开头 并且 UDT 中仍然包含先前 XML 中的数据 如果在新标签中定义了该标签 则会覆盖
  • docker-compose 重启间隔

    我有一个docker compose yml文件包含以下内容 services kafka listener build command bundle exec kafka foreground restart always other s
  • 更新与更新地点

    我有一个包含很多行的表 我定期想将其中的一列设置为0使用 cron 什么更快 更少的内存消耗 做UPDATE在所有行上 即没有WHERE条款 或做一个UPDATE only WHERE mycolumn 0 正如在原始帖子的评论中注意到的那
  • 在调用者的返回序列中跳过函数

    在一系列函数调用中 例如 main gt A gt B gt C 当被调用函数完成时 它通常返回到调用函数 例如C 返回到B 这将返回到A etc 我想知道是否也可以直接返回到调用序列中较早的函数 所以C 还给main 并跳过B and A
  • C# 字节数组到固定 int 指针

    是否可以以某种方式转换由fixed 语句创建的指针的类型 情况是这样的 我有一个字节数组 我想对其进行迭代 但是我希望将这些值视为 int 从而使用 int 而不是 byte 这是一些示例代码 byte rawdata new byte 1
  • Three.js:如何缩放和偏移图像纹理?

    如何缩放和偏移图像纹理 我的图像尺寸是 1024 像素 x 1024 像素 var textureMap THREE ImageUtils loadTexture texture png 看一下纹理文档 https threejs org
  • 禁用 UICollectionView 中 UIAttachmnetBehavior 的垂直移动

    我尝试在水平 UICollectionView 中模仿消息应用程序弹簧动画 我在 UICollectionViewFlowLayout 子类中使用了 UIAttachmentBehavior 但问题是 当我水平滚动时 单元格也会垂直和水平移
  • 视图之间快速导航的设计建议

    通常 当视图需要大量绑定或某些 UI 元素 例如 Bing 地图 时 需要 一段时间 来加载 例如半秒到一秒 我不希望 点击 操作 例如点击列表框中的元素 和导航操作 显示新页面 之间出现延迟 我不介意逐步显示页面 例如 对于 Bing 地
  • 查找满足条件的向量内的索引

    我正在寻找一个条件 它将返回满足条件的向量的索引 例如 我有一个向量b c 0 1 0 2 0 7 0 9 我想知道 b gt 0 65 的第一个索引 在这种情况下 答案应该是 3 I tried which min subset b b
  • 刷新后保留通过 jquery 动态生成的输入字段

    我正在使用下面的脚本根据需要生成输入字段 但是 刷新或单击返回提交错误页面时 输入的字段和信息会消失 有什么办法可以在点击返回或刷新页面后保留字段吗 document ready function var MaxInputs 67 var
  • 在 TextInput 中实现 @mention

    如何在React Native的TextInput中实现 mention 我试过这个反应本机提及 https github com harshq react native mentions但它不再被维护了 有很多样式问题和回调问题 我想要的
  • 如何从 npm 模块导入 css 文件 - webcomponent

    我正在尝试在我的应用程序中使用 MDC 组件作为材料设计组件 我在 Polymer LitElement 中有一个自定义元素 render props return html SharedStyles
  • 矢量的小字符串优化?

    我知道几个 全部 STL 实现实现了 小字符串 优化 其中字符串不是存储通常的 3 个指针 用于开始 结束和容量 而是将实际字符数据存储在用于指针的内存中 如果 sizeof characters 我正在考虑通过简单地将向量转换为字符串来实
  • JavaScript 中的 isPrototypeOf

    我是初学者JavaScript在我去的路上JavaScript 中的原型 根据文章here http www w3schools com js js object prototypes asp 创建原型创建对象原型的标准方法是使用对象构造函
  • 实例是否应该使用 setter/getter 来访问自己的私有数据成员?

    从每一门入门编程课程开始 我们都会被教导如何使用访问器和设置器 而不是暴露类的内部工作原理 学生稍后再学习练习的要点 但现在我明白这种做法 A 阻止实现成为合同导出 API 的一部分 B 改进封装和数据隐藏 C 允许保证每当设置或访问变量时
  • Django Queryset 注释字段的绝对值

    如何获取注释字段的绝对值 我尝试了下面的代码 但没有成功 queryset annotate relevance abs F capacity int request GET capacity order by relevance Erro
  • 有没有办法自定义 gitblame 的输出?

    git log有一个不错的 format选项来指定输出的格式 But git blame尽管默认输出为blame不太人性化 我希望看到的少一些 例如 代替 5600cab7 js sidebar VehicleGrid js Rene Sa
  • 更改magento中的愿望清单网址[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个特别的要求 是否可以将整个愿
  • 在 Clojure 中实现 Java 泛型接口

    我正在尝试使用 selenium2 webdriver 项目来掌握 clojure 的窍门网络驱动程序 clj http github com mikitebeka webdriver cljwebdriver 的包装器 然而 由于网络界面