0

我正在尝试编写一个 Selenium java 程序,该程序将从外部源获取命令。例如,我driver.findElement(By.id("username")).sendKeys("FirstName");以用户友好的方式在外部编写,因此用户可以在不知道后端代码的情况下创建 selenium 脚本。

将其分为4个部分:

1) identifier type e.g. id
2) identifier e.g. "username"
3) command type e.g. sendKeys
4) input data e.g. "Firstname"

在我的代码中,我使用运行时编译器将字符串编译为代码(我这样做是因为我可以在运行时将整个代码作为字符串操作)这样我可以有一小部分代码来运行外部引用的任何内容源,因此只要正确创建了外部源,此代码将适用于 sendKeys、click 等,无需任何更改。

我能跑

 `"   String URL2 = \"id\";"  + "\n" +
        "   String URL3 = \"username\";"  + "\n" +
        "   String URL4 = \"sendKeys\";"  + "\n" +
        "   String URL5 = \"Grabhamn\";"  + "\n" +
        "   System.out.println(\"driver.findElement(By.\"+URL2+\"
  (\"+URL3+\")).\"+URL4+\"(\"+URL5+\");\");" + "\n" +`

这输出 driver.findElement(By.id(username)).sendKeys(Grabhamn);,但我的问题是如何在运行时编译器中执行此代码。另外,我需要将代码输出为
driver.findElement(By.id("username")).sendKeys("Grabhamn");在这些地方包含引号,因为我也没有成功执行此操作。

任何有关如何执行此操作或替代解决方案的信息将不胜感激。

4

1 回答 1

0

我不确定我是否正确理解了您不知道的问题以及您是否成功完成了任务,因为这是很久以前的事了。但是对于后代,我会建议 a) 使用 StringBuilder 来创建你的代码——这被推荐用于大量生成的文本;b)使用字符添加“s

因此,我会尝试执行以下操作:

StringBuilder sb = new StringBuilder();
sb.append("driver.findByElement(By.");
sb.append(URL2);
sb.append('(');
sb.append('"');
sb.append(URL3);
sb.append('"');
...
System.out.plintln(sb.toString);

等等

充其量,我会有一个功能

String parentheses(Object o){
    StringBuilder sb = new StringBuilder();
    sb.append('"');
    sb.append(o.toString());
    sb.append('"');
    return sb.tostring;
}

因为这样你就可以确保括号总是关闭的。

希望这可能会有所帮助。

于 2017-10-25T12:46:39.167 回答