是否可以在命令行中传递参数供用户选择 运行 Selenium 有头或无头?
Is it possible to pass an argument in command line for a user to choose to run Selenium headed or headless?
我知道如何 运行 我的 Selenium 测试无头,但我还需要 运行 有浏览器和 gui 头的选项。现在,我通过命令行传递“-headless”,而不是在 Selenium 代码中将 firefoxOptions headless 布尔值设置为 true。
我不熟悉通过命令行传递参数,但我知道如何遍历它们。我想知道我是否可以使“-headless”成为条件。
您可能应该使用一些构建工具,例如 gradle 或 maven。这将允许您使用 -D 参数传递属性,如下所示:./gradlew clean test -Dparam=val -Dparam2=val2
。因此,您可以使用 System.getProperties()
或 System.getPropery(prop)
.
在代码中检索道具
也可以使用环境变量并使用 System.getEnv()
或 System.getEnv(varName)
检索它们。但我建议为这个特定任务使用属性。
所以想法是将 args 传递给作业,在代码中检索它们并在调用驱动程序之前将它们传递给 firefoxOptions。
我不建议在 运行 期间提示用户提供任何信息,因为这在持续集成过程 (CI) 中不起作用。
您应该选择 headless 参数是强制性的(您必须每次都显式地传递参数),还是带有一些默认值的可选参数。例如,如果没有提供参数,默认情况下测试将 运行 处于无头模式。
./gradlew clean test -Dbrowser=firefox -Dheadless=true
int dialogButton = JOptionPane.YES_NO_OPTION;
int dialogResult = JOptionPane.showConfirmDialog(null, "Would you want to run this test in headless mode?",null, dialogButton);
ChromeOptions options = new ChromeOptions();
if(dialogResult == JOptionPane.YES_OPTION){
// Saving code hereoptions
options.addArguments("--headless");
}
使用Joptionplaneframe java摆动框架
这将打开一个促销活动,
如果您不想提示,请使用扫描仪:
Scanner scanner = new Scanner(System.in);
// prompt for the user's name
System.out.print("Enter yes or no: ");
// get their input as a String
String input= scanner.next();
System.out.print(input);
我知道如何 运行 我的 Selenium 测试无头,但我还需要 运行 有浏览器和 gui 头的选项。现在,我通过命令行传递“-headless”,而不是在 Selenium 代码中将 firefoxOptions headless 布尔值设置为 true。
我不熟悉通过命令行传递参数,但我知道如何遍历它们。我想知道我是否可以使“-headless”成为条件。
您可能应该使用一些构建工具,例如 gradle 或 maven。这将允许您使用 -D 参数传递属性,如下所示:./gradlew clean test -Dparam=val -Dparam2=val2
。因此,您可以使用 System.getProperties()
或 System.getPropery(prop)
.
也可以使用环境变量并使用 System.getEnv()
或 System.getEnv(varName)
检索它们。但我建议为这个特定任务使用属性。
所以想法是将 args 传递给作业,在代码中检索它们并在调用驱动程序之前将它们传递给 firefoxOptions。
我不建议在 运行 期间提示用户提供任何信息,因为这在持续集成过程 (CI) 中不起作用。 您应该选择 headless 参数是强制性的(您必须每次都显式地传递参数),还是带有一些默认值的可选参数。例如,如果没有提供参数,默认情况下测试将 运行 处于无头模式。
./gradlew clean test -Dbrowser=firefox -Dheadless=true
int dialogButton = JOptionPane.YES_NO_OPTION;
int dialogResult = JOptionPane.showConfirmDialog(null, "Would you want to run this test in headless mode?",null, dialogButton);
ChromeOptions options = new ChromeOptions();
if(dialogResult == JOptionPane.YES_OPTION){
// Saving code hereoptions
options.addArguments("--headless");
}
使用Joptionplaneframe java摆动框架
这将打开一个促销活动,
如果您不想提示,请使用扫描仪:
Scanner scanner = new Scanner(System.in);
// prompt for the user's name
System.out.print("Enter yes or no: ");
// get their input as a String
String input= scanner.next();
System.out.print(input);