Selenium/PageFactory:使用父元素的@FindBy查找子元素?

2023-12-10

我正在尝试将我的硒测试转换为使用页面对象模型(以及扩展的@FindBy)。我有几个像这样的对象定义:

public WebElement objectParent() {
    return driver.findElement(By.name("parent-id")) ;
}

public WebElement objectChild() {
    WebElement elem = objectParent();
    return elem.findElement(By.name("child-id")) ;
}

将父对象转换为使用@FindBy简单:

@FindBy(name = "parent-id")
WebElement parentObj;

基本上,如果可能的话,我想做这样的事情(我知道这不是真正的代码,这只是一个伪示例:

@FindBy(name = "parent-id")
WebElement parentObj;

@FindBy(parentObj.name = "child-id")
WebElement childObj;

但是有没有办法定位子元素within父元素使用@FindBy?。我需要这样做,因为我的目标是页面上的特定元素,这些元素可能与页面上的其他元素共享相同的名称或类名。谢谢!


如果不编写自定义内容,您想要做的事情是不容易实现的ElementLocatorFactory.

首先我真的推荐使用XPath。 这将使您很容易获得:
3rd <table>像这样:@FindBy(xpath = "\\table[3]") and...
2nd <li>在第三张表中就像这样:@FindBy(xpath = "\\table[3]\li[2]").

但如果你真的想用更短的时间来做@FindBy注释,你可以去ElementLocatorFactory.

public class FindByContextModifier implements ElementLocatorFactory {

    private final SearchContext context;

    public FindByContextModifier(final SearchContext context) {
        this.context = context;
    }

    public ElementLocator createLocator(final Field field) {
        return new DefaultElementLocator(context, field);
    }
}

带有将为您提供上下文的元素的类:

public class Parent {
    @FindBy(name = "myTable")
    WebElement table;

    public WebElement getTable() {
      return this.table;
    }
}

它的孩子:

public class Child {
    @FindBy(name = "particular")
    WebElement specialTableListElement;
}

Usage:

Parent parent = PageFactory.initElements(driver, Parent.class);
FindByContextModifier parentContext = new FindByContextModifier(parent.getTable());
Child child = new Child();
// This will look for the name "particular" inside the element with "myTable" name
PageFactory.initElements(parentContext, child);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium/PageFactory:使用父元素的@FindBy查找子元素? 的相关文章

  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • 在 Python 中使用 Selenium 处理“接受 Cookie”弹出窗口

    我一直在尝试用硒抓取这个房地产网站的一些信息 但是 当我访问该网站时 我需要接受 cookie 才能继续 这仅在机器人访问网站时发生 而不是在我手动执行时发生 当我尝试通过 xpath 或 id 查找相应的元素时 正如我在手动检查页面时找到
  • 使用 Checkstyle Plugin 时从插件调用代码时出现问题:“org.eclipse.jface”

    我正在尝试在 Rational Software Architect 7 0 0 4 上使用 eclipse cs 插件 我最近卸载了旧的 beta2 版本并安装了 beta3 插件本身按照之前的配置工作 但是每当我尝试通过 Windows
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Selenium webdriver 退出并显示错误代码 135

    我是量角器新手 我在尝试使用量角器运行 Selenium 测试时收到以下错误 I hosted Using the selenium server at http localhost 4444 wd hub I launcher Runni
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

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

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 在 AKKA 中,对主管调用 shutdown 是否会停止其监督的所有参与者?

    假设我有一位主管连接了 2 位演员 当我的应用程序关闭时 我想优雅地关闭这些参与者 调用supervisor shutdown 是否会停止所有参与者 还是我仍然需要手动停止我的参与者 gracias 阻止主管 https github co
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Java中有类似分支/跳转表的东西吗?

    Java有类似分支表或跳转表的东西吗 分支表或跳转表是 根据维基百科 http en wikipedia org wiki Branch table 用于描述使用分支指令表将程序控制 分支 转移到程序的另一部分 或可能已动态加载的不同程序
  • 使用 eclipse IDE 配置 angularjs

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

随机推荐

  • 使用WCF在两个winform应用程序之间通信?

    我有两个不同的winform应用程序 App1和app2 App1调用app2的exe 使用DOS命令窗口 并发送消息来启动app2 app2 开始执行 一旦完成任务 它就会向 app1 发送执行成功的消息 我如何使用 WCF 实现此功能
  • 在 PyQt GUI 中嵌入和更新 matplotlib 图形时出现内存泄漏

    我正在尝试将每秒更新一次的 matplotlib 图嵌入到 PyQt GUI 主窗口中 在我的程序中 我每秒调用一个更新函数threading Timer通过timer函数如下所示 我有一个问题 我的程序每秒都在变大 大约每 4 秒 1k
  • 子查询出现问题,字段不存在,但优点是给我结果

    我有一个关于优势子查询的问题 当我分析几个 SQL 查询时 我偶然发现了一个奇怪的情况 当我执行以下 SQL 时 得到以下结果 select from orderlyn where OLWArtnr in select OlwArtnr f
  • 在 C# 中执行批处理文件

    我正在尝试用 C 执行批处理文件 但没有成功 我在互联网上找到了多个这样做的例子 但它对我不起作用 public void ExecuteCommand string command int ExitCode ProcessStartInf
  • jQuery 覆盖 $.post 函数

    首先 我为我糟糕的英语道歉 希望有人能理解我的问题并帮助我 我正在开发一个使用大量 post 调用的项目 我想通过为所有调用添加相同的验证来改进它们 我不想一一更改所有脚本 那么有没有办法覆盖 post 函数以同时向所有脚本添加相同的内容
  • 如何在 Android 中使用选项卡小部件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 谁能告诉我如何制作tab widget在安卓中 有一个开发人员指南展示了如何实现选项卡式活动 片段http developer android co
  • 用于浮点阈值操作的 SIMD

    我想让一些向量计算更快 并且我相信用于浮点比较和操作的 SIMD 指令可以有所帮助 操作如下 void func const double left const double right double res const size t si
  • Django 用不同的字段注释计数

    我有两个松散定义的模型 如下所示 class InformationUnit models Model username models CharField max length 255 project models ForeignKey P
  • 使用Python解析Gmail并将所有早于日期的内容标记为“已读”

    长话短说 我创建了一个新的 Gmail 帐户 并将其他几个帐户链接到它 每个帐户都有 1000 条消息 我正在导入这些帐户 所有导入的消息均以未读状态到达 但我需要它们显示为已读 我对 python 有一点经验 但我只使用 mail 和 i
  • 如何在#include 上将库名称放在头名称之前?

    我正在使用 cmake 编译具有以下结构的项目 Root LibA inc src LibB inc src main cpp 我在每个 LibX 每个 src 和 Root 文件夹上都有 CMakeLists 我的项目正在按预期编译和运行
  • 正则表达式匹配不包含所有指定元素的字符串

    我想找到一个正则表达式来匹配不包含所有指定元素的字符串 无论它们的顺序如何 例如 给定以下数据 one two three four one three two one two one three four 传递话语two three正则表
  • pip 抛出“TypeError: deprecated() ”错误

    我正在尝试安装一些软件包并开始出现错误 然后在ubuntu中使用多个命令更新一些东西 但错误是相似的 pip install U pip setuptools or python3 m pip install upgrade pip or
  • 来自现有文件的 NetBeans GUI 生成器

    我是 NetBeans IDE 的新手 我正在使用 NetBeans GUI 构建器来创建 GUI 我通过右键单击包并单击 新建 然后单击新的 JFrame 表单来创建一个新文件 它运行良好 但我有一个带有 JFrame 的 java 文件
  • 在 Django 模板中渲染外部定义的块

    我正在为 Django 编写一个简单的类似博客的应用程序 并试图获得首页帖子限制为 5 个的效果 并具有一次列出大约 100 个帖子的综合存档 100不现实 只是扔一个数字 由于博客文章块在两个页面之间看起来完全相同 减去显示的数量 因此我
  • django boto3:NoCredentialsError - 无法找到凭据

    我正在尝试使用boto3在我的 django 项目中将文件上传到 Amazon S3 凭证定义在settings py AWS ACCESS KEY xxxxxxxx AWS SECRET KEY xxxxxxxx S3 BUCKET xx
  • 如何在 VBA 中根据 A 列重复名称将整个行复制到其各自的工作表?

    我当前的代码将尝试使用 VBA 将基于列 A 重复名称的整行复制到其各自的工作表 如下所示 但它只适用于第一个重复的名称 而不适用于其余的名称 当我检查我的代码时 我意识到我的目标 在目标 Lbound到Ubound部分的部分 始终为0 所
  • 如何使用jquery或ajax以10秒的间隔刷新div

    任何帮助都值得这里的人们表示感谢 我正在用 php 构建一个 Web 应用程序 并且使用 Yii MVC 框架 它有很多内置工具 正如标题所说 我需要每10秒刷新一次div 目前我有这个ajax功能
  • 将数据标签添加到折线图[重复]

    这个问题在这里已经有答案了 我想使用 pandas matplotlib 在该图的圆圈顶部添加数据标签 使用 pandas 和 月份 作为索引从 Excel 文件加载数据 Importing the data Path xyz xlsx d
  • 如何对具有重置条件的列进行 SUM() ?

    我使用的是 Postgresql 9 2 我需要对按钮向上的数量进行求和 初始值为 100 但是如果我遇到名为 X 的行 我需要从该行中的 qty 值重新启动 SUM 例如 itemorder name qty 1 A 20 2 A2 35
  • Selenium/PageFactory:使用父元素的@FindBy查找子元素?

    我正在尝试将我的硒测试转换为使用页面对象模型 以及扩展的 FindBy 我有几个像这样的对象定义 public WebElement objectParent return driver findElement By name parent