是否可以在代码应该添加变量?

时间:2017-05-15 09:42:09

标签: java selenium

我目前正在尝试使用Java和Selenium创建自动化框架。

我想创建一行代码,它本质上可以读取任何输入并使其成为一行可运行代码。例如,在外部文件中,用户可以将“id”发布到字段中,然后该字段将由我的程序读取并执行该行。 driver.findElement(By.id(.......)

目前,我正在使用一堆if语句为每个标识符执行此操作,例如id,cssSelector,Xpath等等,但是我需要对程序.click,.sendKeys等使用的动作做同样的事情,这样程序才会不断扩展,看起来整体非常混乱。

是否有一个解决方案可以让我以更好的方式做到这一点,还是我坚持原来的做法?

2 个答案:

答案 0 :(得分:0)

Reflection可能是解决此问题的最直接方法。它本质上允许通过字符串名称查找类和方法。

这是一个fag-packet示例,说明如何使用您提供的代码段来解决此问题,但我建议您在潜入之前阅读一些documentation

Element findElementReflectively(Driver driver, String elementType, String thingToSearchFor) {

    try {
        Method m = By.class.getMethod(elementType, String.class);
        if(!Modifier.isStatic(m.getModifiers())) {
            throw new NoSuchMethodException("'By' method is not static.");
        }

        return driver.findElement(m.invoke(null, thingToSearchFor));
    } catch (IllegalAccessException | NoSuchMethodException e) {
        throw new IllegalArgumentException("Unknown element type: " + elementType, e);
    } catch (InvocationTargetException e) {
        throw new RuntimeException("Failed to find requested element.", e.getCause());
    }

}

答案 1 :(得分:0)

这取决于你真正想做的事情。

从文件读取id然后执行代码可以通过配置文件实现:Properties

或者,如果您想要执行完整的输入代码,只需再搜索一下 How to execute console or GUI input as if it was actual Java code?