当前位置: 首页 > 知识库问答 >
问题:

Selenium WebDrive-PageFactory中实现链式WebDrivefindelement

常子濯
2023-03-14

我有一个Webelements列表,其中选择了一个随机元素。现在有了一个随机的webelement,我需要找到其中的所有子元素。我怎样才能在pagefactory中实现这一点。

在selenium中,这是有效的:

List<WebElement> listOfElements = driver.findElements(By.xpath("//locator"));

WebElement randomElement = // Code to get a random element out of this list.

String title = randomElement.findElement(By.xpath(".//[@id='title']"));

在页面工厂,我尝试过:

@FindBy(xpath="//locator")

List<WebElement> listOfElements;

@FindBy(id="title");

WebElement title;


WebElement randomElement = // Code to get a random element out of this list.

困在如何获取标题中的随机元素使用页工厂注释。

我知道这会奏效:

String title = randomElement.findElement(By.xpath(".//[@id='title']"));

当我在整个项目中使用页面工厂注释时,有没有一种方法可以实现同样的效果。

共有2个答案

郜彦
2023-03-14

对您来说可能为时已晚,但以防它对其他人有帮助:这样做是可能的,但不简单,需要定制一些WebDriver的内部类。

今年早些时候,我在一篇博客文章中讨论了如何使用“block”类来解决这个问题。这并不是一件小事,但是有一个github项目,其中包含了我使用的代码,如果您想自己使用它的话。

本质上,我使用每个定位的WebElement生成一个称为块的新“PageObject”类。只要每个随机元素都相同,就可以使用PageFactory表示法查找子WebElements。

请注意,所有这些都有很大的开销,因此如果您只是想获取标题,那么最好使用带有链接findElements()调用的流API。

程鸿煊
2023-03-14

在页面对象中创建一个公共方法,该方法返回webelements列表。

public List<WebElement> getTitles(WebElement randomElement) {
    return randomElement.findElements(by.id("title"));
}
 类似资料:
  • 关于 PageFactory 的概念主要是Java中内置了PageFactory类。 import org.openqa.selenium.support.PageFactory; …… 例子,http://libin0019.iteye.com/blog/1260090   Python(Selenium)中没有这个类。 PageFactory 的概念和Page Object应该类似,属于

  • 我正在尝试学习PageFactory模式。我理解了这样一个事实:当我们执行时,就会找到WebElements。例如,我点击了一个webelement,因此DOM中的其他webelements中的一个发生了更改。现在,显然我将在这里得到一个。我该如何解决这个问题? 如果知道DOM中WebElement的属性可能发生变化,我是否应该再次找到特定的WebElement?还是有别的办法可以处理这件事?

  • 本文向大家介绍Java 中责任链模式实现的三种方式,包括了Java 中责任链模式实现的三种方式的使用技巧和注意事项,需要的朋友参考一下 责任链模式 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。这里就不再过多的介绍什么是责任链模式,主要来说说java中如何编写。主要从下面3个框架中

  • 这是我到目前为止所拥有的: 一个基于Webdriver的Java类,它可以登录到应用程序并进入主页: 现在我们看到有两页:1。登录页面,其中我必须输入用户名和密码,以及主页,一旦身份验证成功,我将被带到这里。 现在我想使用Pagefactory将其实现为PageObjects: 对于登录页面,我不确定如何实现它,以及调用这些页面的测试。

  • 本文向大家介绍php链式操作的实现方式分析,包括了php链式操作的实现方式分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php链式操作的实现方式。分享给大家供大家参考,具体如下: 类似$db->where("id=1")->limit("5")->order("id desc"),链式操作的实现方式 先讲下方法的常规调用; 调用 缺点:实现多个方法需要多行调用; 链式操作,在方法返回

  • 本文向大家介绍spring aop之链式调用的实现,包括了spring aop之链式调用的实现的使用技巧和注意事项,需要的朋友参考一下 概述 AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。 Spring AOP采用的是动态代理,在运行期间对业务方法进行增