java - selenium java,带有常量的泛型方法

标签 java selenium constants

我正在使用 selenium 和 java,我正在尝试找到一种更好的方法来使用单选按钮

在此示例中,我有一组 3 个同名单选按钮

<input type="radio" name="test" value="1" />Foo
<input type="radio" name="test" value="2" />Bar
<input type="radio" name="test" value="3" />Foobar

我想创建一个扩展(或使用)selenium webelement 的类,以便能够更轻松地使用它,而不必依赖声明后的值。 所以类似(语法可能不存在,但它可能会让您了解我想要实现的目标)

MyRadio myRadioInstance = new MyRadio(By.ByName("test")) {
    declareValues() {
        FOO(1);
        BAR(2);
        FOOBAR(3);
    }
};

使用后类似的事情

myRadioInstance.isSelected(myRadioInstance.FOO);
myRadioInstance.select(myRadioInstance.FOO);

这样做,我不必在代码中的任何地方都硬编码 Foo 的值为 2,并且它仅适用于这个特定的 radio 集。

如果可能的话,我想依靠某种常量或枚举插入“Foo/Bar/Foobar”字符串来防止声明后出现最大错误。

这是可以用java完成的事情还是我只是在梦想不可能的事?

谢谢

最佳答案

由于在java中我们无法在运行时直接生成变量,因此几乎不可能为不同数量的无线元素创建一个具有常量或枚举的类。

Is it possible to create variables at runtime in Java?

我们能做的最好的事情就是使用 map 创建一个可以处理 radio 的通用类。

public class MyRadio {
    // map to store radios
    Map<String, WebElement> elementMap = new HashMap<String, WebElement>(); 

    MyRadio(By by) {
        // find all radios
        List<WebElement> elements = driver.findElements(by);
        // iterate through radios and add to a map
        for (WebElement element: elements) {
            elementMap.put("radio"+element.getAttribute("value"), element);
        }     
    }

    public WebElement getRadio(String radioName) {
        if (elementMap.contains(radioName)) {
            return elementMap.get(radioName);
        }
        // might want to throw a custom exception here like noRadioFoundException
        return null;
    }
}


MyRadio myRadioInstance = new (By.ByName("test"));
myRadioInstance.getRadio("radio1");
myRadioInstance.getRadio("radio2");

map 中 radio 的名称为 radio + radio 值。我们可以根据您的意愿进行更改。

我们可以添加验证方法,例如 radioFound(radioName)getAllRadioNames() 以使类更加健壮。

关于java - selenium java,带有常量的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42651385/

相关文章:

php - 为什么null可以写成反斜杠?

objective-c - Objective-c 中的 const 关键字

java - 发生 ClassCastException 但没有任何正确的详细信息

Java iterate/foreach 包含 hashmap/map<Int, Int> 的 ArrayList

javascript - Webdriver.io 因 NoSessionIdError 崩溃

java - 连接eclipse和数据库

java - 应用栏不显示后退按钮

java - 为什么使用 JavaIO 加载此 jpg 会出现 CMMException?

java - 如何使用 Selenium Webdriver Java 查找表行号

html - 在 Ionic 3 中访问 HTML 中的常量