首页 > 解决方案 > 如何在将字符串作为参数传递的类中使用字符串作为变量

问题描述

在可重复使用的情况下,我使用了变量

WebElement yellow = Driver.findElement(By.cssSelector("#yel"))

public void color(String color) { //something
}

如果我调用以下方法,现在在我的主类中:

cls.color("yellow")

颜色方法应该使用黄色的webelement。

由于我有 n 种颜色类型,我不想if在颜色方法中使用条件。

我可以知道如何使用字符串变量来识别相应的webelement。另外我不想将 webelement 声明为公共的。

标签: javaseleniumselenium-webdriver

解决方案


如果您要yellow多次为该字段执行其他颜色的操作,并且需要通过 CSS 选择器查找它们,那么我建议您使用 a Map,并使用循环来查找它们.

private Map<String, WebElement> colors = new HashMap<>();
{
    final String[] COLOR_MAPS = {
            "#yel", "yellow",
            "#red", "red",
            "#grn", "green" };
    for (int i = 0; i < COLOR_MAPS.length; i += 2)
        colors.put(COLOR_MAPS[i + 1], Driver.findElement(By.cssSelector(COLOR_MAPS[i])));
}
public void color(String color) {
    WebElement elem = colors.get(color);
    if (elem == null)
        throw new IllegalArgumentException("Unknown color: " + color);
    ...
}

推荐阅读