gpt4 book ai didi

java - 可以覆盖@FindBy 的父类(super class)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:01 25 4
gpt4 key购买 nike

我正在移植一个现有项目,我有一个名为 DetailPage 的父类(super class),这是我唯一可以更改/编辑的东西。这是一个 selenium 测试项目,在以前的版本中,我有数百个单独的页面,这些页面扩展了 DetailPage 并具有以下几行:

@FindBy(id="someID")
private WebElement someIDBox;

在页面中搜索给定的 id 并将该元素分配给变量。我现在有一个类似的 nonW3C 网站,所以我现在需要通过 name 查找,而不是通过 id 查找,即:

@FindBy(name="someID")
private WebElement someIDBox;

是我现在想要的。

所以我的问题是如何(如果可能的话)在 DetailPage 中创建一个父类(super class)函数,它会注意到我说的是 id 并用 name 覆盖?

我不想要一个只用 name 替换单个页面中的文本 id 的函数,因为我需要保留它们。

最佳答案

作者article扩展了“FindBy”注释来支持他的需求。您可以使用它来覆盖“FindBy”并进行实现。

编辑后的代码示例:

private static class CustomFindByAnnotations extends Annotations {

protected By buildByFromLongFindBy(FindBy findBy) {
How how = findBy.how();
String using = findBy.using();

switch (how) {
case CLASS_NAME:
return By.className(using);
case ID:
return By.id(using); // By.name(using); in your case
case ID_OR_NAME:
return new ByIdOrName(using);
case LINK_TEXT:
return By.linkText(using);
case NAME:
return By.name(using);
case PARTIAL_LINK_TEXT:
return By.partialLinkText(using);
case TAG_NAME:
return By.tagName(using);
case XPATH:
return By.xpath(using);
default:
throw new IllegalArgumentException("Cannot determine how to locate element " + field);
}
}
}

请注意,我自己没有尝试过。希望对您有所帮助。

关于java - 可以覆盖@FindBy 的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com